如何在Python中阅读大文件的特定部分

Cer*_*rin 13 python parsing

给定一个大文件(数百MB),我如何使用Python快速读取文件中特定开始和结束索引之间的内容?

从本质上讲,我正在寻找一种更有效的方法:

open(filename).read()[start_index:end_index]
Run Code Online (Sandbox Code Playgroud)

Dan*_*ocq 22

您可以seek将文件放入文件中,然后从那里读取一定数量的文件.Seek允许您获取文件中的特定偏移量,然后您可以将读取限制为仅该范围内的字节数.

with open(filename) as fin:
    fin.seek(start_index)
    data = fin.read(end_index - start_index)
Run Code Online (Sandbox Code Playgroud)

这只会读取您正在寻找的数据.

  • 请注意,这仅与具有单字节编码(例如ASCII)或二进制文件的文件的OP代码等效,因为OP的`start_index`和`end_index`是字符位置,而`seek()`和`read()`有效带字节位置.当您具有可变宽度编码的文件时,您可能必须解码该文件才能正确索引. (6认同)
  • 这是一个非常好的观点。我非常喜欢 ASCII 模式:-) (2认同)
  • 额外的一点:如果您尝试读取文件的多个连续段,则 fin.read(n) 会自动将读取指针设置为要读取的下一个字节。 (2认同)