【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)

重新查看时间属性,发现已修改。

在这里插入图片描述

参考

猜你喜欢

转载自blog.csdn.net/qq_42951560/article/details/126895314
今日推荐