【问题标题】:Change ctime, mtime and atime of a windows file?更改 windows 文件的 ctime、mtime 和 atime?
【发布时间】:2020-05-04 02:38:55
【问题描述】:

我用:

ctime = (datetimes[0])
mtime = (datetimes[1])
atime = (datetimes[2])
# handle datetime.datetime parameters
if isinstance( ctime, datetime.datetime ) :
    ctime = time.mktime( ctime.timetuple() )
if isinstance( mtime, datetime.datetime ) :
    mtime = time.mktime( mtime.timetuple() )
if isinstance( atime, datetime.datetime ) :
    atime = time.mktime( atime.timetuple() )
# adjust for day light savings
now = time.localtime()
ctime += 3600 * (now.tm_isdst - time.localtime(ctime).tm_isdst)
mtime += 3600 * (now.tm_isdst - time.localtime(mtime).tm_isdst)
atime += 3600 * (now.tm_isdst - time.localtime(atime).tm_isdst)
# change time stamps
winfile = win32file.CreateFile(
    path_completo_actual, 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, Time(int(ctime)), Time(int(atime)), Time(int(mtime)) )
winfile.close()

但我不能使用pywintypes,它说:pywintypes has no Time member。 我有import pywintypes:

from pywintypes import Time

【问题讨论】:

  • 你的pywin32 的安装一定有问题,因为我可以在升级到最新版本后执行from pywintypes import Time,为 Python 3.8 构建 227 — 尝试重新安装它。
  • 仅供参考,您只需要元数据访问,而不需要数据访问(即通用写入访问),因此您不需要数据访问共享模式。永远不要请求超过所需的访问权限,这一点很重要。打开文件的调用应该是win32file.CreateFile(path_completo_actual, ntsecuritycon.FILE_WRITE_ATTRIBUTES, 0, None, win32file.OPEN_EXISTING, 0, None)
  • 可能您正在运行 Python 2,但我没有检查。在 Python 3 中,您可以将日期时间对象直接传递给 win32file.SetFileTime

标签: python windows time pywin32


【解决方案1】:

感谢您的帮助 树天在这个问题上,可能是 VS Code 或 Pylint

[1

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-03-10
    • 1970-01-01
    • 2022-07-01
    • 2012-07-16
    • 2015-08-23
    • 1970-01-01
    • 2011-06-02
    • 1970-01-01
    相关资源
    最近更新 更多