当前位置: 首页 > news >正文

文件(文件夹时间戳修改)最后修改时间变更

🤟致敬读者

  • 🟩感谢阅读🟦笑口常开🟪生日快乐⬛早点睡觉

📘博主相关

  • 🟧博主信息🟨博客首页🟫专栏推荐🟥活动信息

文章目录

  • 文件(文件夹时间戳修改)最后修改时间变更
    • 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 使用注意事项

  1. 管理员权限:修改系统文件需以管理员身份运行
  2. 时区问题:确保系统时区设置正确
  3. 路径格式:Windows系统使用原始字符串处理反斜杠
  4. 文件锁定:修改前关闭所有文件句柄

4.2 扩展功能建议

  • 添加GUI界面
  • 支持正则表达式过滤文件名
  • 实现时间偏移量修改(如全部延后3天)
  • 添加文件哈希校验功能
  • 支持修改创建时间(Windows需调用系统API)

5. 技术原理深度解析

5.1 文件系统时间戳存储机制

不同文件系统的时间戳精度存在差异:

文件系统修改时间精度访问时间记录
NTFS100纳秒默认启用
ext41纳秒可配置关闭
FAT322秒仅记录日期

5.2 Python时间处理原理

OS Python User 调用os.walk 发起系统调用 返回文件信息 转换时间戳 调用utime 返回操作结果 OS Python User

6. 结语

本文实现的文件时间戳修改工具已在实际项目中验证,成功处理超过50万文件量的目录结构。通过灵活运用Python的系统接口和日期时间模块,开发者可以快速构建高效的文件管理工具。建议在实际使用前进行充分测试,重要操作做好备份。

7. 截图

修改后的时间截图,如下,时间均已修改为指定时间
在这里插入图片描述


📜文末寄语

  • 🟠关注我,获取更多内容。
  • 🟡技术动态、实战教程、问题解决方案等内容持续更新中。
  • 🟢《全栈知识库》技术交流和分享社区,集结全栈各领域开发者,期待你的加入。
  • 🔵​加入开发者的《专属社群》,分享交流,技术之路不再孤独,一起变强。
  • 🟣点击下方名片获取更多内容🍭🍭🍭👇

相关文章:

  • python打卡day25@浙大疏锦行
  • promise的说明
  • Minimum MPDU Start Spacing in A-MPDU
  • Spring Cloud:构建云原生微服务架构的最佳工具和实践
  • WhaleTunnel 信创数据库适配能力全景图:打通国产数据生态的最后一公里
  • 【Linux】shell内置命令fg,bg和jobs
  • 缺乏自动化测试,如何提高测试效率
  • 剖析提示词工程中的递归提示
  • Dockerfile实战:从零构建自定义CentOS镜像
  • UOS专业版上通过源码安装 Python 3.13 并保留系统默认版本
  • 关于并发编程AQS的学习
  • Python 之 Flask 入门学习
  • 计算机图形学之几何(Geometry)
  • Spring 事件监听机制的使用
  • Spring 中的 @Configuration @Bean注解
  • UE5 像素推流
  • 在UI 原型设计中,交互规则有哪些核心要素?
  • 数值积分知识
  • 【嵌入模型与向量数据库】
  • 阿里巴巴java开发手册
  • 思想史家陈谷嘉逝世,曾为岳麓书院当代复兴奠定重要基础
  • 张涌任西安市委常委,已卸任西安市副市长职务
  • 习近平会见智利总统博里奇
  • 金正恩观摩朝鲜人民军各兵种战术综合训练
  • 乌拉圭前总统何塞·穆希卡去世
  • 哲学新书联合书单|远离苏格拉底