Python:如何逐行读取大型文本文件,而不将其加载到内存中?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (1142)

我需要逐行读一个大文件。假设该文件的容量超过5GB,我需要读取每一行,但显然我不想使用因为它会在内存中创建一个非常大的列表。

下面的代码将如何适用于这种情况?是一个一个地读进内存?需要生成器表达式吗?

f = (line for line in open("log.txt").xreadlines())  # how much is loaded in memory?

f.next()  

另外,我能做些什么来按照相反的顺序读到这个,就像linux一样。如linux的tail命令?

我发现:

http://code.google.com/p/pytail/

"python head, tail and backward read by lines of a text file"

都挺棒的!

提问于
用户回答回答于
with open("log.txt") as infile:
    for line in infile:
        do_something_with(line)
用户回答回答于

您所需要做的就是使用文件对象作为迭代器。

for line in open("log.txt"):
    do_something_with(line)

更好的方法是在最近的Python版本中使用上下文管理器。

with open("log.txt") as fileobject:
    for line in fileobject:
        do_something_with(line)

这也将自动关闭文件。

扫码关注云+社区

领取腾讯云代金券