更改zip文件元素的最后修改时间
我想要修改一个压缩文件里所有文件和文件夹的最后修改时间。
如果我在解释器里逐行运行脚本,最后修改时间好像确实被改了。但是在压缩文件里却没有反映出来。
我正在使用Python的zipfile模块。
下面是我的源代码。
import zipfile as zp
import datetime
import datetime
def main():
zipfile = raw_input("enter the path for your zipfile :")
if os.path.exists(zipfile) and zp.is_zipfile(zipfile):
time = raw_input("enter the time for which your files and folders in zip file want to be changed. format: dd-mm-yyyy HH:MM:SS -")
if time is not None :
time = datetime.datetime.strptime(time, "%d-%m-%Y %H:%M:%S")
newtime = time
time = (time.year, time.month, time.day, time.hour, time.minute, time.second)
print "time =", time
z = zp.ZipFile(zipfile, "a", zp.ZIP_DEFLATED)
z.printdir()
try :
for i in range(len(z.filelist)):
z.infolist()[i].date_time = time
z.printdir()
finally :
z.close()
else :
print "you have not entered a valid time!"
else :
print " you have not entered a valid zipfile name. "
if __name__ == "__main__":
main()
1 个回答
2
用Python自带的zipfile
模块,直接实现这个功能是不行的。你可以参考这个问题:在zip文件中覆盖文件
如果你查看ZipFile
类的代码,会发现它在close
方法中只是把数据添加到原始zip文件的末尾。如果想要修改文件的日期,你需要使用一些第三方库,比如myZip
,或者自己实现这个功能。
另一种方法是先把zip文件完全解压,然后再把它重新打包,并更新日期和时间。想了解更多细节,可以查看上面提到的问题的回答。