【问题标题】:Add ten seconds to creation time in windows在 windows 中添加十秒的创建时间
【发布时间】:2012-09-29 20:42:34
【问题描述】:

我正在尝试编写一个脚本,通过将文件的创建时间增加 10 秒来更改文件的创建时间。我在 Windows 7 上测试它,但也想在 XP 中运行它。我尝试使用以下代码遵循How do I change the file creation date of a Windows file from Python? 的解决方案:

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

我正在 Python 3.1.3 上尝试这个,但如果需要,我可以使用 Python 2.7。我只需要在 Windows 上运行它。

【问题讨论】:

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

标签: python


【解决方案1】:

似乎astimezone() 在 python2.7 和 python3 中的实现略有不同。我试图在他们两个下运行你的代码,只有 python3 引发ValueError。所以,我的解决方案是切换到 python2。
Upd.:我不是唯一一个认为这些实现不同的人,你可以看看following conversation(倒数第二个帖子)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-04-27
    • 1970-01-01
    • 1970-01-01
    • 2018-04-29
    • 1970-01-01
    • 2018-09-05
    • 1970-01-01
    相关资源
    最近更新 更多