【问题标题】:How do I iterate through a large file without running out of memory in python?python - 如何在不耗尽python内存的情况下遍历一个大文件?
【发布时间】:2019-05-11 20:47:04
【问题描述】:

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

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”的总和,但程序在产生任何输出之前就崩溃了。我可以做些什么来阻止这种情况发生吗?

【问题讨论】:

  • 可能想要使用标量(整数)来计算出现次数并打印该值而不是累积该数组。

标签: python memory crash generator


【解决方案1】:

在迭代过程中保持运行总计,而不是简单地累积要添加的内容。内置函数sum 将为您完成这项工作。

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

【讨论】:

    猜你喜欢
    • 2013-07-30
    • 2018-10-28
    • 2019-09-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-13
    相关资源
    最近更新 更多