我将zip文件作为包含多个文件和文件夹的输入,我正在解压缩,然后我想将zip中每个内容的上次修改时间更改为用户设置的新日期和时间。
我正在使用os.utime()
来更改日期和时间,但更改只会反映到文件中,而不会反映在zip中的文件夹中。
timeInStr = raw_input("Enter the new time =format: dd-mm-yyyy HH:MM:SS -")
timeInDt=datetime.datetime.strptime(timeInStr, '%d-%m-%Y %H:%M:%S')
timeInTS=mktime(timeInDt.timetuple())
epochTime=(datetime.datetime(timeInDt.year, timeInDt.month, timeInDt.day, timeInDt.hour, timeInDt.minute, timeInDt.second)-datetime.datetime(1970,1,1)).total_seconds()
z=zp.ZipFile(inputZipFile,"a",zp.ZIP_DEFLATED)
for files in z.infolist():
z.extract(files, srcFolderName)
fileName=files.filename
new= fileName.replace('/',os.path.sep)
correctName= srcFolderName+os.path.sep+new
print correctName
if(correctName.endswith(os.path.sep)):
correc=correctName[:-1]
print correc
os.utime(correc, (timeInTS, timeInTS))
else:
os.utime(correctName, (timeInTS, timeInTS))
我使用Python 2.7作为平台
答案 0 :(得分:3)
基于SO的目录权限是this question。当目录本身更改为ex:当您在其中创建新文件时,该目录仅更改其时间戳。因此,要更新文件夹的时间戳,您可以创建临时文件,然后将其删除。应该有一个更好的方法,但在找到它之前,你可以使用它进行管理。
答案 1 :(得分:1)
我遇到了类似的问题。 Here是我用来解决问题的代码。
正如user966588所述,目录的时间戳正在更新目录时更新。
在我链接的帖子中,我保留了所有目录元数据更新,直到我的目录完全填充后才能保留时间戳。