改变gzip文件头的最快方法?

时间:2015-02-10 15:25:32

标签: python gzip

我使用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)

有关如何实现更高性能的任何建议?

1 个答案:

答案 0 :(得分:0)

在命令行defaults to a compression level of 6上进行Gzip。但是,Python defaults to a compression level of 9,速度较慢但会生成较小的文件。如果您希望更快地提交较大的文件,可以将compresslevel=6传递给gzip.open(),或者如果您以后想要较小的文件,则可以将-9传递给gzip