python - 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”的总和,但程序在产生任何输出之前就崩溃了。我能做些什么来阻止这种情况的发生吗?
解决方案
在迭代时保持运行总计,而不是简单地累积要添加的内容。内置功能sum
将为您执行此操作。
with gzip.open(f) as fhand:
result = sum(line.count(b'NEU') for line in fhand)
推荐阅读
- shell - 读取当前时间并在接下来的 2 小时内增加 1 分钟并运行一些命令
- android - Android 录音,应用快速傅里叶变换
- java - 为验证字符串输入编写参数化测试的最佳实践是什么?
- centos - 为什么在复制文件夹时 Ansible 仍然提供最后的“空”权限?
- r - 将数据帧作为表格写入剪贴板偏移结果
- javascript - chrome 无法运行 console.log() Uncaught SyntaxError: Invalid or unexpected token
- jquery - 根据所选选项值更改用于功能的值?
- sql - SQL 选择中的减法返回 0
- jquery - 有没有一种方法可以限制多列 ul 显示中的行数?
- javascript - 如何使用jspdf在HTML画布中获取和显示存储在s3中的pdf文件