如何在Python中删除指定创建日期范围内的文件?
Python 用 os 库删除指定创建日期范围的文件
要实现按创建日期筛选文件并删除,核心是获取文件的创建时间并与目标日期范围对比,以下是完整实现方案:
关键说明
os.stat()可获取文件元数据:- Windows 系统中,
st_ctime代表文件创建时间 - Unix/Linux/macOS 系统中,
st_ctime是文件状态更改时间,创建时间需用st_birthtime
- Windows 系统中,
- 需要把时间戳转换为可比较的
datetime对象,再和你定义的 X、Y 日期做范围判断
完整代码示例
import os from datetime import datetime # 配置参数 target_dir = "你的目标目录路径" # 定义日期范围(格式:年-月-日) start_date_str = "2023-01-01" # X日期 end_date_str = "2023-12-31" # Y日期 # 将字符串日期转为datetime对象 start_date = datetime.strptime(start_date_str, "%Y-%m-%d") end_date = datetime.strptime(end_date_str, "%Y-%m-%d") # 遍历目录下的所有文件 for filename in os.listdir(target_dir): file_path = os.path.join(target_dir, filename) # 只处理文件(跳过子目录) if os.path.isfile(file_path): # 获取文件创建时间(区分系统) if os.name == 'nt': # Windows系统 create_time = datetime.fromtimestamp(os.stat(file_path).st_ctime) else: # Unix/Linux/macOS系统 create_time = datetime.fromtimestamp(os.stat(file_path).st_birthtime) # 判断是否在目标日期范围内 if start_date <= create_time <= end_date: # 测试阶段先打印确认,无误后再替换为os.remove print(f"将删除文件:{file_path}") # os.remove(file_path)
注意事项
- 测试时保留
print语句、注释os.remove,确认筛选文件正确后再执行删除 - 确保对目标目录有写入权限,否则会抛出权限错误
- 若需精确到时分秒,修改日期字符串格式为
"%Y-%m-%d %H:%M:%S"即可
内容的提问来源于stack exchange,提问作者Fernanda Diniz Marinho
相关产品推荐
相关产品推荐

