如何在Python中读取中等大小指定的文件块

时间:2015-06-15 23:45:10

标签: python io

如果我有一个文本文件,从第5 MB附近的行开始到文件中的干净方法是什么,并将后续5 MB的行读入列表?理想情况下是一系列行。

我知道f.seek(5000000)从第5 MB开始,如果我估计行数,我可能估计接下来的5MB,但如果有更精确的方法则会很好。试图玩f.readlines,但这不起作用

1 个答案:

答案 0 :(得分:2)

我假设的行为是在文件中寻找5 MB并将接下来的5 MB拆分成行。你想要的东西是:

f.seek(5*1024*1024)
lines = f.read(5*1024*1024).splitlines()

或手动计数(推荐方法,效率更高):

f.seek(5*1024*1024)
lines = []
while f.tell() < 10*1024*1024:
    line = f.readline(10*1024*1024-f.tell())
    lines.append(line)

但是,如果您正在计算字节数,请记得以二进制模式打开文件!