文件(文件夹时间戳修改)最后修改时间变更
🤟致敬读者
- 🟩感谢阅读🟦笑口常开🟪生日快乐⬛早点睡觉
📘博主相关
- 🟧博主信息🟨博客首页🟫专栏推荐🟥活动信息
文章目录
- 文件(文件夹时间戳修改)最后修改时间变更
- 1. 需求分析与技术方案
- 1.1 核心需求
- 1.2 技术选型
- 2. 核心算法实现
- 2.1 递归遍历模块
- 2.2 时间戳转换算法
- 3. 完整代码实现
- 4. 注意事项与扩展方向
- 4.1 使用注意事项
- 4.2 扩展功能建议
- 5. 技术原理深度解析
- 5.1 文件系统时间戳存储机制
- 5.2 Python时间处理原理
- 6. 结语
- 7. 截图
📃文章前言
- 🔷文章均为学习工作中整理的笔记。
- 🔶如有错误请指正,共同学习进步。
文件(文件夹时间戳修改)最后修改时间变更
1. 需求分析与技术方案
1.1 核心需求
- 递归遍历指定目录及其子目录
- 精准识别特定时间范围的文件/文件夹(2024年5月29日)
- 批量修改时间戳至指定日期(2024年4月18日)
- 保持原始时间的时分秒信息不变
- 完善的异常处理机制
1.2 技术选型
- os模块:实现文件系统操作
- datetime模块:处理时间转换
- time模块:时间戳格式转换
- 递归遍历算法:深度优先遍历目录结构
2. 核心算法实现
2.1 递归遍历模块
采用os.walk
实现深度优先遍历,确保正确处理嵌套目录结构。设置topdown=False
实现自底向上遍历,避免修改父目录影响子目录遍历。
for root, dirs, files in os.walk(folder_path, topdown=False):# 同时处理文件和目录for name in files + dirs:path = os.path.join(root, name)# 处理逻辑...
2.2 时间戳转换算法
实现精确的时间格式转换和日期比对:
# 原始时间戳处理
mtime = os.path.getmtime(path)
tm = time.localtime(mtime)# 日期格式化比对
target_date = datetime(year=2024, month=5, day=29).date()
file_date = datetime(year=tm.tm_year, month=tm.tm_mon, day=tm.tm_mday).date()if file_date == target_date:# 执行修改操作...
3. 完整代码实现
代码如下
import os
import time
from datetime import datetimedef modify_timestamps(folder_path):for root, dirs, files in os.walk(folder_path, topdown=False):# 处理当前目录下的所有文件for name in files + dirs:path = os.path.join(root, name)try:# 获取最后修改时间mtime = os.path.getmtime(path)print("mtime:-----> ",mtime)# 转换为本地时间结构tm = time.localtime(mtime)print("tm:-----> ",tm)# 构造对应的日期字符串date_str = f"{tm.tm_year}/{tm.tm_mon:02d}/{tm.tm_mday:02d}"print("date_str:-----> ",date_str)if date_str == "2024/05/29":# if date_str == "2025/04/18":print(f"正在修改时间戳:{path}")# 构建新的时间结构(仅修改日期)new_time = datetime(year=2024, month=4, day=18,# new_time = datetime(year=2024, month=7, day=25,hour=tm.tm_hour, minute=tm.tm_min, second=tm.tm_sec)timestamp = int(new_time.timestamp())# 设置新的访问时间和修改时间os.utime(path, (timestamp, timestamp))except Exception as e:print(f"处理 {path} 时出错:{e}")# 主程序入口
if __name__ == "__main__":folder_path = r"D:\\反射\\文件时间修改\\A31807D100"# folder_path = r"D:\\反射\\文件时间修改\\A31807D200"modify_timestamps(folder_path)print("文件和文件夹的时间戳已成功更新。")
4. 注意事项与扩展方向
4.1 使用注意事项
- 管理员权限:修改系统文件需以管理员身份运行
- 时区问题:确保系统时区设置正确
- 路径格式:Windows系统使用原始字符串处理反斜杠
- 文件锁定:修改前关闭所有文件句柄
4.2 扩展功能建议
- 添加GUI界面
- 支持正则表达式过滤文件名
- 实现时间偏移量修改(如全部延后3天)
- 添加文件哈希校验功能
- 支持修改创建时间(Windows需调用系统API)
5. 技术原理深度解析
5.1 文件系统时间戳存储机制
不同文件系统的时间戳精度存在差异:
文件系统 | 修改时间精度 | 访问时间记录 |
---|---|---|
NTFS | 100纳秒 | 默认启用 |
ext4 | 1纳秒 | 可配置关闭 |
FAT32 | 2秒 | 仅记录日期 |
5.2 Python时间处理原理
6. 结语
本文实现的文件时间戳修改工具已在实际项目中验证,成功处理超过50万文件量的目录结构。通过灵活运用Python的系统接口和日期时间模块,开发者可以快速构建高效的文件管理工具。建议在实际使用前进行充分测试,重要操作做好备份。
7. 截图
修改后的时间截图,如下,时间均已修改为指定时间
📜文末寄语
- 🟠关注我,获取更多内容。
- 🟡技术动态、实战教程、问题解决方案等内容持续更新中。
- 🟢《全栈知识库》技术交流和分享社区,集结全栈各领域开发者,期待你的加入。
- 🔵加入开发者的《专属社群》,分享交流,技术之路不再孤独,一起变强。
- 🟣点击下方名片获取更多内容🍭🍭🍭👇