我使用gz压缩文件维护一个基准库,其中包含前几行中的描述性元数据。手动,我可以解压缩246MB gz压缩文件(使用gunzip),更改它,并使用Linux终端在2分钟内压缩它(使用gzip)。在同一个文件中,在我杀死之前,以下脚本需要大约5分钟才能完成(使用Python 2.7.5)和12+分钟(使用Python 3.4.1)。
import os, gzip, shutil
def renew_file(file, tempfile):
f = gzip.open(file,'r')
try:
# Read and modify first line(s)
buf = f.readline()
buf = 'changing first line\n'
# Write change to temporary file
f2 = gzip.open(tempfile,'w')
try:
f2.write(buf)
shutil.copyfileobj(f,f2)
finally:
f2.close()
finally:
f.close()
# Overwrite file
os.rename(tempfile, file)
有关如何实现更高性能的任何建议?
答案 0 :(得分:0)
在命令行defaults to a compression level of 6上进行Gzip。但是,Python defaults to a compression level of 9,速度较慢但会生成较小的文件。如果您希望更快地提交较大的文件,可以将compresslevel=6
传递给gzip.open()
,或者如果您以后想要较小的文件,则可以将-9
传递给gzip
。