Python获取或修改 Windows 系统中文件的创建时间修改时间和访问时间(os | win32file)
Posted Xavier Jiezou
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python获取或修改 Windows 系统中文件的创建时间修改时间和访问时间(os | win32file)相关的知识,希望对你有一定的参考价值。
引言
Windows 系统中的文件和时间有关的属性共有三个,分别是:创建时间、修改时间和访问时间。本文介绍如何利用 Python 编程获取或修改这三个属性。
提示
- 创建时间:指文件第一次创建的时间;
- 修改时间:指文件上一次修改的时间;
- 访问时间:指文件上一次访问的时间。
方法
获取时间属性
- 获取文件创建时间:
os.path.getctime(path)
(联想记忆:create); - 获取文件修改时间:
os.path.getmtime(path)
(联想记忆:modify); - 获取文件访问时间:
os.path.getatime(path)
(联想记忆:access)。
修改时间属性
os.utime 只能更改文件的修改时间和访问时间,而不能更改文件的创建时间。因此,我们这里统一使用 win32file 模块来修改文件的上述三个时间属性。
实验
首先,创建一个测试文件。
with open("test", "wb") as fp:
pass
然后,鼠标右击查看其时间属性。
通过如下代码获取其时间属性。
import os
from datetime import datetime
ctime = os.path.getctime("test")
ctime_string = datetime.fromtimestamp(int(ctime))
mtime = os.path.getmtime("test")
mtime_string = datetime.fromtimestamp(int(ctime))
atime = os.path.getatime("test")
atime_string = datetime.fromtimestamp(int(ctime))
print(
f"创建时间:ctime_string",
f"修改时间:mtime_string",
f"访问时间:atime_string",
sep="\\n"
)
'''输出
创建时间:2022-09-18 23:24:06
修改时间:2022-09-18 23:24:06
访问时间:2022-09-18 23:24:06
'''
通过如下代码修改其时间属性。
import win32file
from datetime import datetime
new_ctime = datetime.strptime("2021-01-01 00:00:00", "%Y-%m-%d %H:%M:%S")
new_mtime = datetime.strptime("2022-01-01 00:00:00", "%Y-%m-%d %H:%M:%S")
new_atime = datetime.strptime("2023-01-01 00:00:00", "%Y-%m-%d %H:%M:%S")
handle = win32file.CreateFile(
"test",
win32file.GENERIC_READ | win32file.GENERIC_WRITE,
0,
None,
win32file.OPEN_EXISTING,
0,
0,
)
win32file.SetFileTime(handle, new_ctime, new_atime, new_mtime) # 注意这里的顺序,访问时间在前,修改时间在后
win32file.CloseHandle(handle)
重新查看时间属性,发现已修改。
参考
以上是关于Python获取或修改 Windows 系统中文件的创建时间修改时间和访问时间(os | win32file)的主要内容,如果未能解决你的问题,请参考以下文章
Python获取或修改 Windows 系统中文件的创建时间修改时间和访问时间(os | win32file)
背水一战 Windows 10 (87) - 文件系统: 获取文件的属性, 修改文件的属性, 获取文件的缩略图