如何在 python 内存不足 运行 的情况下遍历大文件?

How do I iterate through a large file without running out of memory in python?

我想做的基本上是打印一个字符串在一个文件中出现了多少次,但是文件太大以至于当我尝试遍历它时程序总是崩溃:

import gzip
res = []
def fileopener(f):
    with gzip.open(f) as fhand:
        for line in fhand:
            res.append(line.count(b'NEU'))
        print(sum(res))

预期的结果是 'NEU' 的总和,但程序在产生任何输出之前就崩溃了。我能做些什么来阻止这种情况发生吗?

在迭代时保持 运行 总数,而不是简单地积累要添加的东西。 built-in 函数 sum 会为您做这件事。

with gzip.open(f) as fhand:
    result = sum(line.count(b'NEU') for line in fhand)