Файл сжатия с сохраненной измененной меткой времени

Я застрял в установке штампа времени файла, также как и в документе gzip python, синтаксис не работает как gzip.GzipFile(filename=outputfile,mode='wb',compresslevel=9,mtime=ftime) , но когда я использовал gzip.GzipFile(outputfile,'wb',9,mtime=ftime) работает, но кроме gzip.GzipFile(outputfile,'wb',9,mtime=ftime) времени.

 def compresse_file(file,ftime): data = open(file,'rb') outputfile = file +".gz" gzip_file = gzip.GzipFile(outputfile,'wb',9,mtime=ftime) gzip_file.write(data.read()) gzip_file.flush() gzip_file.close() data.close() os.unlink(file) 

Вот вывод:

 root@ubuntu:~/PythonPractice-# python compresses_file.py Size Date File Name 5 MB 30/12/13 test.sh Compressing... test.sh 1388403823.0 file status after compressesion 5 kB 31/12/13 test.sh.gz root@ubuntu:~/PythonPractice-# date -d @1388403823.0 Mon Dec 30 17:13:43 IST 2013 

Как вы можете видеть в документации , аргумент mtime – это метка времени, которая записывается в поток, это не влияет на метку времени созданного файла gzip. Это временная метка, которую распаковал файл, если он был распакован с использованием gunzip -N .

Пример:

 >>> import datetime >>> import gzip >>> ts = datetime.datetime(2010, 11, 12, 13, 14).timestamp() >>> zf = gzip.GzipFile('test.gz', mode='wb', mtime=ts) >>> zf.write(b'test') >>> zf.flush() >>> zf.close() 

И распакован:

 $ gunzip -N test.gz $ stat -c%y test 2010-11-12 13:14:00.000000000 +0100 

Если вы хотите, чтобы созданный файл gzip имел определенную временную метку, используйте os.utime, чтобы изменить его:

 ... st = os.stat(file) ... os.utime(outputfile, (st.st_atime, st.st_mtime)) ...