更改zip文件元素的上次修改时间

时间:2014-05-06 15:44:06

标签: python python-2.7 datetime zipfile

我试图更改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()

请帮忙!
在此先感谢:)

1 个答案:

答案 0 :(得分:0)

使用Python的默认zipfile模块无法直接实现这一点。参见例如这个问题:overwriting file in ziparchive

如果您查看ZipFile类代码,您会在close方法中看到它只会将数据附加到原始zip文件的末尾。 要修改文件日期,您必须使用某些网站包,例如myZip,或者自己实现此功能。

替代方法是完全解压缩您的zip文件并使用更新的日期和时间重新打包。有关详细信息,请参阅上述问题的答案。