如何在linux上gzip文件并保留时间戳

时间:2014-12-08 05:12:26

标签: python gzip

我一直在网上搜索,但我无法找到如何使用python来压缩日志文件并保留日志文件的时间戳。我查看了python提供的gzip函数,但因为它读取数据然后输出它,它会覆盖文件的时间戳。我需要它的行为就像我对文件运行linux gzip命令一样。有没有办法做到这一点?



    try:
      f_in=open(file,'rb')
      f_out=gzip.open(file + '.gz','wb')
      f_out.writelines(f_in)
      f_out.close()
      f_in.close()
    
      # delete copy that gzip creates during gzip process
      os.unlink(file)

    except IOError, e:
      print "Cant Gzip %s: File not found " % file




2 个答案:

答案 0 :(得分:2)

来自the documentation

  

mtime 参数是压缩时要写入流的可选数字时间戳。所有 gzip 压缩流都需要包含时间戳。如果省略或None,则使用当前时间。该模块在解压缩时忽略时间戳;但是,某些程序,如 gunzip ,会使用它。时间戳的格式与time.time()的返回值以及st_mtime返回的对象的os.stat()属性的格式相同。

答案 1 :(得分:0)

如果使用Python 2.6,则zlib模块无法调整写入gz文件的mtime。你只剩下两种方式:

  • 升级到Python 2.7,使用stat / fstat获取原始文件的mtime并将其写入gz文件
  • 通过子进程模块使用Linux系统的gzip实用程序。