如何更改文件夹的修改时间?

5 投票
2 回答
4191 浏览
提问于 2025-04-18 05:49

我正在处理一个压缩文件,这个文件里面有很多文件和文件夹。我先把它解压出来,然后我想把压缩包里每个内容的最后修改时间改成用户设定的新日期和时间。

我使用了 os.utime() 来修改日期和时间,但这个修改只对文件有效,对压缩包里的文件夹没有效果。

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 这个平台。

2 个回答

1

我遇到了类似的问题。这里是我用来解决这个问题的代码。

正如用户966588所说,目录的时间戳会随着目录的变化而更新。

在我链接的帖子中,我在目录完全填充好之前,先不去处理任何目录的元数据更新,这样时间戳的变化就能保持不变。

4

关于目录权限的基础知识,可以参考这个问题。目录的时间戳只有在目录本身发生变化时才会更新,比如说你在里面创建了一个新文件。所以,如果你想更新一个文件夹的时间戳,可以先创建一个临时文件,然后再把它删除。虽然应该有更好的方法,但在你找到之前,可以先用这个办法。

撰写回答