2011-09-25 96 views
2

我在Windows(XP)和Linux上都试过utime()。在Windows上,我得到一个EACCES错误,在Linux上我没有得到任何错误(但时间没有改变)。我的utime()代码很好,因为它适用于文件。我找不到utime()应该在目录上工作,但如果不是,我该如何更改时间和日期?更改目录时间/日期

我正在寻找一个解决方案,它可以理想地适用于Windows和Linux,但如果不是,我总是可以使用一些操作系统特定的代码。

utime似乎确实可以在Linux上工作,但它似乎不适用于我,因为我在该目录中移动文件,并且将时间戳记更新为当前时间。

+0

可能相关:http://stackoverflow.com/questions/2363497/python-os-utime-doesnt-update-the-access-time –

+0

不幸的是没有真正相关,我根本无法更新时间戳(last访问或修改)。 – Radu

+0

是的,但也许是相同的注册表键*和*另一个关闭? –

回答

2

对于Windows,您可以使用也适用于目录的SetFileTime

+0

谢谢,我尝试过,但Windows今天给我带来了很多麻烦。我不得不使用CreateFile来获取我可以用于SetFileTime的那个目录的句柄。所以我这样做:src_dir = CreateFile(源,GENERIC_READ,FILE_SHARE_READ,NULL,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL);那么,我得到一个“访问被拒绝”错误:/ – Radu

+0

标志CREATE_ALWAYS可能是问题。如果该目录存在,则使用OPEN_ALWAYS。否则使用CreateDirectory创建一个目录。此外,必须使用FILE_WRITE_ATTRIBUTES权限打开与SetFileTime一起使用的句柄。 GENERIC_READ并不意味着这种权利。 –

+0

谢谢,我将它改为:src_dir = CreateFile(source,GENERIC_READ,FILE_SHARE_READ,NULL,OPEN_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL);仍然是相同的访问冲突:/我之所以使用GENERIC_READ是因为我想使用补充函数GetFileTime()。我想要做的是复制目录,我想将新创建的目录的日期设置为与原始日期相同的日期。 – Radu