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

发布于 2021-02-02 23:19:34

我需要逐行读取一个大文件。可以说该文件的大小超过5GB,我需要读取每一行,但是显然我不想使用readlines()它,因为它将在内存中创建一个非常大的列表。

下面的代码在这种情况下将如何工作?xreadlines自身是否一一读取到内存中?是否需要生成器表达式?

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

f.next()  

另外,与Linux tail命令一样,我该怎么做才能以相反的顺序阅读?

关注者
0
被浏览
80
1 个回答
  • 面试哥
    面试哥 2021-02-02
    为面试而生,有面试问题,就找面试哥。

    我提供此答案是因为Keith的提示虽然简洁,但并未明确关闭文件

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


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看