所以我有一些相当大的 .gz 文件——解压后每个文件 10 到 20 GB。
我需要遍历它们的每一行,所以我使用的是标准:
import gzip
f = gzip.open(path+myFile, 'r')
for line in f.readlines():
#(yadda yadda)
f.close()
但是,open()
和close()
命令都占用了 AGES,占用了 98% 的内存+CPU。以至于程序退出并打印Killed
到终端。也许它将整个提取的文件加载到内存中?
我现在正在使用类似的东西:
from subprocess import call
f = open(path+'myfile.txt', 'w')
call(['gunzip', '-c', path+myfile], stdout=f)
#do some looping through the file
f.close()
#then delete extracted file
这行得通。但是有更清洁的方法吗?