如何实现获取两天前创建的所有.py文件并迁移?
实现筛选两天前创建的.py文件并迁移
要实现这个需求,你需要添加时间计算逻辑,对比文件创建时间和当前时间的差值。以下是修改后的代码,同时修正了原代码中不必要的getctime导入,并处理了不同系统下文件创建时间的获取差异:
import os import shutil from datetime import datetime, timedelta source = r'/Users/sourcedir' destination = r'/Users/destdir' # 计算两天前的时间阈值 two_days_ago = datetime.now() - timedelta(days=2) for root, dirs, files in os.walk(source): for file in files: if file.endswith('.py'): # 更严谨的后缀判断方式 file_path = os.path.join(root, file) # 获取文件创建时间,兼容不同操作系统 try: # 类Unix系统(macOS、Linux)获取创建时间 create_time = datetime.fromtimestamp(os.stat(file_path).st_birthtime) except AttributeError: # Windows系统用getctime作为创建时间 create_time = datetime.fromtimestamp(os.path.getctime(file_path)) # 判断是否为两天前创建的文件 if create_time < two_days_ago: shutil.move(file_path, destination)
关键逻辑说明:
- 时间阈值计算:通过
timedelta(days=2)得到两天的时间间隔,用当前时间减去这个间隔,得到需要筛选的时间临界点。 - 文件创建时间获取:不同操作系统对文件创建时间的存储方式不同,代码通过异常处理兼容类Unix和Windows系统。
- 后缀判断优化:用
file.endswith('.py')替代原代码的'.py' in file,避免匹配到文件名中包含.py但后缀不符的文件(如test.py.txt)。
内容的提问来源于stack exchange,提问作者Anastasia
相关产品推荐
相关产品推荐

