有没有用于逐行读取文件的Python库?

1 投票
1 回答
519 浏览
提问于 2025-04-17 12:34

可能重复的问题:
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) 来定位。

撰写回答