如何从python设置文件的最后修改时间?

Posted

技术标签:

【中文标题】如何从python设置文件的最后修改时间?【英文标题】:How can I set the last modified time of a file from python? 【发布时间】:2012-07-06 03:07:48 【问题描述】:

我有一个 python 脚本,它使用 ftplib 通过 FTP 下载文件。

我当前的下载代码看起来就像 ftp lib 文档中的示例:

ftp.retrbinary('RETR README', open('README', 'wb').write)

现在我要求通过 FTP 下载的文件需要与 FTP 服务器本身的文件具有相同的上次修改时间。假设我可以从ftp.retrlines('list') 解析出时间,我该如何设置下载文件的修改时间?

如果这很重要,我使用的是基于 unix 的操作系统。

【问题讨论】:

【参考方案1】:

使用os.utime:

import os

os.utime(path_to_file, (access_time, modification_time))

更详细的例子:https://www.tutorialspoint.com/python/os_utime.htm

【讨论】:

这个答案可以通过一个例子和当时格式的讨论来改进;特别是一个时代; IE @jossef 的回答。【参考方案2】:

要编辑文件的最后修改字段,请使用:

os.utime(<file path>, (<access date epoch>, <modification date epoch>))

例子:

os.utime(r'C:\my\file\path.pdf', (1602179630, 1602179630))

? - Epoch 是自 1970 年 1 月 1 日以来经过的秒数。see more


如果您正在寻找datetime 版本:

import datetime
import os

def set_file_last_modified(file_path, dt):
    dt_epoch = dt.timestamp()
    os.utime(file_path, (dt_epoch, dt_epoch))

# ...

now = datetime.datetime.now()
set_file_last_modified(r'C:\my\file\path.pdf', now)

? - 对于 Python 版本 dt_epoch = time.mktime(dt.timetuple())

【讨论】:

感谢您的回答;它包含示例,详细且有用。 这应该是答案。但是晚了8年【参考方案3】:

有两种方法可以做到这一点。一个是os.utime example,它 如果您要在没有 参考统计数据。

但是,如果您使用 shutil.copy() 复制文件,则您有一个 参考文件。然后,如果您想要权限位,上次访问时间, 最后修改时间,并且标志也复制了,你可以使用 shutil.copystat() 紧跟在 shutil.copy() 之后。

然后是shutil.copy2,它打算同时做这两个......

【讨论】:

以上是关于如何从python设置文件的最后修改时间?的主要内容,如果未能解决你的问题,请参考以下文章

如何获取 ADLS Gen2 文件的最后修改日期并将其保存到 python 中的 csv

如何在 databricks 工作区中使用 python 获取 azure datalake 存储中存在的每个文件的最后修改时间?

如何根据特定日期获取最后修改的文件并导入python脚本[重复]

如何从 S3 存储桶中读取最后修改的 csv 文件?

如何从Python更改符号链接的atime和mtime?

存储访问框架 - 设置本地 DocumentFile 的最后修改日期