有没有用于逐行读取文件的Python库?
可能重复的问题:
Python:如何将大型文本文件读入内存
我想逐行处理一个很大的文本文件(超过1G),希望能随机访问任何行号,最重要的是,不想把整个文件的内容都加载到内存里。有没有什么Python库可以做到这一点?
在分析大型日志文件时,这样做是很有帮助的,只需要读取就可以了。
如果没有这样的标准库,我就得找其他方法:找一套函数或类,能够从一个像大字符串那样的对象中返回第N行的子字符串,这样我就可以把文件映射到那个对象上,然后进行逐行处理。
谢谢。
附注:日志文件的行长度几乎肯定是变化的。
1 个回答
1
我觉得下面这种方法可能有效,因为文件对象的 readline()
方法是一次读取一行。如果每行的长度不固定,你需要像下面这样来标记位置。
lines = [0]
with open("testmat.txt") as f:
while f.readline():
lines.append(f.tell())
# now you can read an arbitrary line:
f.seek(lines[1235])
line = f.readline()
如果每行的长度都是一样的,你可以直接用 f.seek(linenumber*linelenght)
来定位。