Python 在windows中增加10秒的创建时间

Python 在windows中增加10秒的创建时间,python,Python,我正在尝试编写一个脚本,通过增加10秒来更改文件的创建时间。我正在Windows7上测试它,但也希望在XP中运行它。我尝试使用以下代码遵循解决方案: import os import pywintypes, win32file, win32con def changeFileCreationTime(fname, newtime): wintime = pywintypes.Time(newtime) winfile = win32file.CreateFile(

我正在尝试编写一个脚本,通过增加10秒来更改文件的创建时间。我正在Windows7上测试它,但也希望在XP中运行它。我尝试使用以下代码遵循解决方案:

import os
import pywintypes, win32file, win32con
def changeFileCreationTime(fname, newtime):
    wintime = pywintypes.Time(newtime)
    winfile = win32file.CreateFile(
        fname, win32con.GENERIC_WRITE,
        win32con.FILE_SHARE_READ | win32con.FILE_SHARE_WRITE | win32con.FILE_SHARE_DELETE,
        None, win32con.OPEN_EXISTING,
        win32con.FILE_ATTRIBUTE_NORMAL, None)

    win32file.SetFileTime(winfile, wintime, None, None)

    winfile.close()


for (path, dirs, files) in os.walk('C:/Personal/fc/Images/Corvette'):
    for file in files:
        print(os.path.join(path, file))
        print(os.stat(os.path.join(path, file)))
        changeFileCreationTime(os.path.join(path, file),os.stat(os.path.join(path, file)).st_ctime+10)
        print(os.stat(os.path.join(path, file)))
但我得到了一个错误:

Traceback (most recent call last):
  File "C:\Python31\Lib\site-packages\pythonwin\pywin\framework\scriptutils.py", line 326, in RunScript
   exec(codeObject, __main__.__dict__)
  File "C:\Users\hermamr1\Desktop\Script1.py", line 20, in <module>
   changeFileCreationTime(os.path.join(path, file),os.stat(os.path.join(path, file)).st_ctime+10)
  File "C:\Users\hermamr1\Desktop\Script1.py", line 11, in changeFileCreationTime
   win32file.SetFileTime(winfile, wintime, None, None)
ValueError: astimezone() cannot be applied to a naive datetime
回溯(最近一次呼叫最后一次):
RunScript中的文件“C:\Python31\Lib\site packages\pythonwin\framework\scriptutils.py”,第326行
exec(代码对象,主目录)
文件“C:\Users\heramr1\Desktop\Script1.py”,第20行,在
changeFileCreationTime(os.path.join(path,file),os.stat(os.path.join(path,file)).st_ctime+10)
changeFileCreationTime中第11行的文件“C:\Users\Heramr1\Desktop\Script1.py”
win32file.SetFileTime(winfile,wintime,None,None)
ValueError:astimezone()无法应用于原始日期时间

我正在Python3.1.3上尝试,但如果需要,我可以使用Python2.7。我只需要在Windows上运行它。

看起来python2.7和python3中的
astimezone()
的实现略有不同。我试图在这两种模式下运行您的代码,但只有python3会引发
ValueError
。因此,我的解决方案是切换到python2。

Upd.:我不是唯一一个认为这些实现不同的人,你可以看一下(下面的第二篇文章)。

看起来python2.7和python3中的
astimezone()
的实现略有不同。我试图在这两种模式下运行您的代码,但只有python3会引发
ValueError
。因此,我的解决方案是切换到python2。

Upd:我不是唯一一个认为这些实现不同的人,你可以看一下(下面的第二篇文章)。

如果你的主要目标是试验Python,特别是PyWin32,那就太好了。如果您只需要完成它,那么您可能需要研究其他更改文件创建日期的方法,例如PowerShell、AutoHotkey或预编译的可执行实用程序(您可以找到免费下载的实用程序)。如果愿意,您仍然可以使用Python,并通过
os.system
子流程
模块调用其他东西。如果您的主要目标是试验Python,尤其是PyWin32,那就太好了。如果您只需要完成它,那么您可能需要研究其他更改文件创建日期的方法,例如PowerShell、AutoHotkey或预编译的可执行实用程序(您可以找到免费下载的实用程序)。如果需要,您仍然可以使用Python,并使用
os.system
子流程
模块调用其他东西。