gpt4 book ai didi

javascript - 从任意行 X 开始读取超长文件的最快方法

转载 作者:行者123 更新时间:2023-12-02 14:47:12 29 4
gpt4 key购买 nike

我有一个文本文件,由 python 程序写入,然后由另一个程序读入以显示在网络浏览器上。目前它是通过 JavaScript 读取的,但我可能会将此功能移至 python,并使用 ajax 请求将结果传递到 javascript。

该文件不定期更新,有时追加一行,有时多达十行。然后,我需要将文件的更新副本获取为 javascript,以便在 Web 浏览器中显示。该文件可能会增长到 100,000 行。新数据始终添加到文件末尾。

因为它是当前写入的,javascript每秒检查一次文件的长度,如果文件比上次读入的长度长,它会再次读入,开始从一开始,对于 10,000 多行的文件来说,这很快就会变得难以处理。加倍如此,因为程序有时可能需要每秒更新一次文件。

在javascript中将数据显示到前端最快/最有效的方法是什么?

我想我可以:

  1. 跟踪文件之前的行数,下次只从文件中的该点读取。

  2. 让一个程序将数据直接传递给另一个程序,而无需读取中间文件(尽管该文件仍必须作为永久日志写入以供以后访问)

每种方法都有具体的好处/问题吗?我如何最好地实现它们?

对于方法 #1,我宁愿不在 for 循环中执行 file.next() 15,000 次来到达我想要开始读取文件的位置,有更好的方法吗?

对于方法#2,由于无论如何我都需要写入文件,因此不读取它是否可以节省大量处理时间?

也许还有其他我没有考虑过的方法?

摘要:该程序需要在网络浏览器中显示来自 python 的数据,这些数据不断更新,并且可能会增长长达 100k 行。由于我每 1 秒检查一次更新,因此它需要高效,以防万一它必须连续进行大量更新。

最佳答案

您要查找的函数是seekFrom the docs:

f.seek(offset, from_what)

The position is computed from adding offset to a reference point; the reference point is selected by the from_what argument. A from_what value of 0 measures from the beginning of the file, 1 uses the current file position, and 2 uses the end of the file as the reference point. from_what can be omitted and defaults to 0, using the beginning of the file as the reference point.

Python 3 的限制:

In text files (those opened without a b in the mode string), only seeks relative to the beginning of the file are allowed (the exception being seeking to the very file end with seek(0, 2)) and the only valid offset values are those returned from the f.tell(), or zero. Any other offset value produces undefined behaviour.

请注意,查找特定行很棘手,因为行的长度可以是可变的。相反,记下文件中的当前位置 (f.tell()),然后返回该位置。

关于javascript - 从任意行 X 开始读取超长文件的最快方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36511097/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com