能否使用Python的pathlib设置文件修改时间?
用pathlib重写文件并保留修改时间的方案
首先明确:你之前尝试的filepath.Path.stat().st_ctime = timestamp无效,是因为stat()返回的stat_result对象是只读的,无法直接赋值修改。
pathlib本身确实没有封装修改文件时间戳的方法,但完全可以结合os模块的utime()函数实现需求,同时保留pathlib的面向对象风格——因为os.utime()支持直接传入pathlib的Path对象作为参数,不用手动转成字符串路径。
具体步骤和代码示例:
- 先用pathlib获取原文件的时间戳
- 重写文件内容
- 调用
os.utime()恢复原时间戳
from pathlib import Path import os # 目标文件路径 target_file = Path("your_file.txt") # 保存原文件的修改时间(st_mtime是修改时间,若需保留创建/状态变更时间可存st_ctime) original_mtime = target_file.stat().st_mtime # 重写文件(示例用write_text,实际可根据需求替换为write_bytes等方式) target_file.write_text("新的文件内容") # 恢复修改时间:utime的times参数格式为(访问时间atime, 修改时间mtime),按需设置即可 os.utime(target_file, times=(original_mtime, original_mtime))
补充说明:
- 若在Windows系统下需要修改创建时间(ctime),
os.utime无法直接处理,可能需要借助win32file这类第三方库,但多数场景下保留修改时间(st_mtime)就足以满足按时间索引的需求。 - 这种方式既保留了pathlib管理路径的便捷性,又实现了时间戳保留的需求,无需完全切换到os模块的路径操作。
内容的提问来源于stack exchange,提问作者SundIT
相关产品推荐
相关产品推荐

