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

新手上路,请多包涵

我想逐行读取一个大文件(> 5GB),而不将其全部内容加载到内存中。我不能使用 readlines() 因为它会在内存中创建一个非常大的列表。

原文由 Bruno Rocha - rochacbruno 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 589
2 个回答

在文件对象上使用 for 循环逐行读取它。使用 with open(...)上下文管理器 确保文件在读取后关闭:

 with open("log.txt") as infile:
    for line in infile:
        print(line)

原文由 John La Rooy 发布,翻译遵循 CC BY-SA 4.0 许可协议

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

 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)

这也会自动关闭文件。

原文由 Keith 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题