首页 > 解决方案 > python - 如何在不耗尽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”的总和,但程序在产生任何输出之前就崩溃了。我能做些什么来阻止这种情况的发生吗?

标签: pythonmemorycrashgenerator

解决方案


在迭代时保持运行总计,而不是简单地累积要添加的内容。内置功能sum将为您执行此操作。

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

推荐阅读