我正在尝试更改zip文件中所有文件和文件夹的最后修改时间。如果我在解释器中逐行尝试脚本,上次修改的时间似乎已经更改。但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()
这在Python的默认zipfile
模块中是不可能的。参见例如这个问题:在zipcarchive 中覆盖文件
如果您查看ZipFile
类代码,您会发现在close
方法中,它只会将数据附加到原始zip文件的末尾。要修改文件日期,您必须使用myZip
之类的网站软件包,或者自己实现此功能。
另一种方法是完全解压你的zip文件,并用更新的日期重新打包;时间详见上述问题的答案。