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)

Python获取Linux或Windows系统的基本信息

背水一战 Windows 10 (87) - 文件系统: 获取文件的属性, 修改文件的属性, 获取文件的缩略图

python, 操作文件和目录

如何在 Python 中获取文件的修改日期/时间? [复制]

python怎么设置环境变量