首页 > 代码库 > ZipFile解压文件不改变压缩包内文件修改日期的方法

ZipFile解压文件不改变压缩包内文件修改日期的方法

本文参考http://stackoverflow.com/questions/9813243/extract-files-from-zip-file-and-retain-mod-date-python-2-7-1-on-windows-7

 1 import os 2 import time 3 from zipfile import ZipFile 4   5 zf = ZipFile(archive.zip, r) 6 for zi in zf.infolist(): 7     zf.extract(zi) 8     date_time = time.mktime(zi.date_time + (0, 0, -1)) 9     os.utime(zi.filename, (date_time, date_time))10 zf.close()

time.mktime()函数执行与gmtime(), localtime()相反的操作,它接收struct_time对象或一个完整的9位元组作为参数,返回用秒数来表示时间的浮点数。

IndexAttributeValues
0tm_year(for example, 1993)
1tm_monrange [1, 12]
2tm_mdayrange [1, 31]
3tm_hourrange [0, 23]
4tm_minrange [0, 59]
5tm_secrange [0, 61]; see (2) in strftime() description
6tm_wdayrange [0, 6], Monday is 0
7tm_ydayrange [1, 366]
8tm_isdst0, 1 or -1; see below

 

 

 

 

 

 

 

上述代码第8行就是构造该元组,(0, 0, -1)分别表示tm_wday,tm_yday,tm_isdst(-1表示夏令时未知)

os.utime(path,(atime, mtime)):将文件的访问和修改时间设为指定值(第二个参数是一个包含两个元素的元组)。

 

 

 

ZipFile解压文件不改变压缩包内文件修改日期的方法