如何在 Python 中设置文件访问时间(atime)
另请参见:如何在 Python 中设置文件修改时间(mtime)
你可以使用 os.utime() 在 Python 中设置文件的访问和修改时间。为了仅设置访问时间(atime),使用此代码片段:
set_atime.py
# atime 必须是 datetime
stat = os.stat(filename)
# times 必须有两个浮点数(unix 时间戳):(atime, mtime)
os.utime(filename, times=(atime.timestamp(), stat.st_mtime))或使用此实用函数:
set_atime_util.py
from datetime import datetime
import os
def set_file_access_time(filename, atime):
"""
将给定文件名的访问时间设置为给定的 atime。
atime 必须是 datetime 对象。
"""
stat = os.stat(filename)
mtime = stat.st_mtime
os.utime(filename, times=(atime.timestamp(), mtime))用法示例:
set_atime_usage.py
# 将 myfile.txt 的访问时间设置为 1970-1-1,保持修改时间不变
set_file_access_time("myfile.txt", datetime(1970, 1, 1, 0, 0, 0))如果你需要兼容 Python 2.x,请使用此变体:
set_atime_py2_compat.py
from datetime import datetime
import os
import time
def datetime_to_timestamp(dt):
return time.mktime(dt.timetuple()) + dt.microsecond/1e6
def set_file_access_time(filename, atime):
"""
将给定文件名的访问时间设置为给定的 atime。
atime 必须是 datetime 对象。
"""
stat = os.stat(filename)
mtime = stat.st_mtime
os.utime(filename, (datetime_to_timestamp(atime), mtime))请参见如何在 Python 2 中将 datetime 转换为 time float(unix 时间戳)和如何修复 Python 错误 AttributeError: datetime.datetime object has no attribute timestamp了解此替代方法的更多详细信息。
如果你有任何使用 Python 3.x 的选择,我建议使用上面列出的 Python 3 版本,因为它更易读、涉及更少的代码,并且(在编写此代码时),Python 2 将在几个月内退役。我建议尽快升级你的脚本以兼容 Python 3,正如许多其他项目已经做的那样。
Check out similar posts by category:
Python
If this post helped you, please consider buying me a coffee or donating via PayPal to support research & publishing of new posts on TechOverflow