只从Python的大文件中读取特定的行号?

我有一个非常大的文件,我想打开它并从中读取特定行,我总是知道我想要的数据所在的行号,但我不想每次都读取整个文件来读取它具体线路。

有没有办法只能读取 Python 中的特定行?或者最有效的方法是什么(即尽可能少地读取文件,以加快执行速度)?

回答

以下是一些选项:

  1. 至少检查一次文件并跟踪您感兴趣的行的文件偏移量。如果您可能多次查找这些行并且文件不会被更改,这是一个很好的方法。
  2. 考虑更改数据格式。例如 csv 而不是 json (见评论)。
  3. 如果没有其他选择,请使用传统的:
def get_lines(..., linenums: list):
    with open(...) as f:
        for lno, ln in enumerate(f):
            if lno in linenums:
                yield ln

在一个4GB的文件这场耗时〜6秒的linenums = [n // 4, n // 2, n - 1]地方n = lines_in_file


以上是只从Python的大文件中读取特定的行号?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>