如何在 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