【发布时间】: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