如何查找目录中5分钟以上的旧文件并写入文件,且每15分钟执行一次
技术方案:查找指定目录中修改时间超5分钟的文件并定时执行
一、Python脚本优化实现
原参考代码存在参数错误、未实现文件写入、冗余依赖等问题,以下是修正并完善后的脚本:
import os import time # 配置目标目录和结果输出文件路径 TARGET_DIR = "/Users/chandha/scripts/python/" OUTPUT_FILE = "/path/to/your/output_record.txt" # 替换为实际输出文件路径 def find_expired_files(): current_time = time.time() five_minutes = 5 * 60 # 5分钟对应的秒数 # 以追加模式写入结果,保留历史执行记录 with open(OUTPUT_FILE, "a", encoding="utf-8") as output_f: # 写入任务执行时间标记 output_f.write(f"=== 执行时间: {time.strftime('%Y-%m-%d %H:%M:%S')} ===\n") # 自动管理目录扫描资源 with os.scandir(TARGET_DIR) as entries: for entry in entries: if entry.is_file(): file_age = current_time - entry.stat().st_mtime if file_age > five_minutes: # 格式化时间信息 modify_time = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(entry.stat().st_mtime)) create_time = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(entry.stat().st_ctime)) # 拼接文件详情 file_detail = f"文件路径: {os.path.join(TARGET_DIR, entry.name)}\n" \ f"创建时间: {create_time}\n" \ f"修改时间: {modify_time}\n" \ f"已存在时长(秒): {int(file_age)}\n\n" output_f.write(file_detail) if __name__ == "__main__": find_expired_files()
关键优化点:
- 用
with语句自动释放文件、目录扫描资源,无需手动调用close() - 以追加模式写入结果文件,避免覆盖历史记录
- 格式化输出文件创建/修改时间,提升可读性
- 移除未使用的
sys、boto3模块,精简代码
二、定时任务配置
1. Linux/macOS(使用crontab)
- 终端执行
crontab -e进入定时任务编辑模式 - 添加以下配置(替换脚本路径为实际路径):
*/15 * * * * /usr/bin/python3 /path/to/your/script.py >> /var/log/expired_files_task.log 2>&1
*/15 * * * *:表示每15分钟执行一次/usr/bin/python3:Python解释器路径(可通过which python3查看)- 末尾日志配置:将脚本输出和错误信息写入日志,方便排查问题
- 保存退出后,crontab自动加载新配置
2. Windows(使用任务计划程序)
- 打开「任务计划程序」,点击「创建基本任务」
- 填写任务名称(如“查找过期文件”),点击下一步
- 触发器选择「每天」,设置重复间隔为15分钟,持续时间选「无限期」,点击下一步
- 操作选择「启动程序」,程序路径选Python解释器(如
C:\Python39\python.exe),添加参数填入脚本完整路径(如"C:\path\to\your\script.py"),点击下一步 - 勾选「完成时打开任务属性对话框」,完成后在属性的「设置」标签中,可勾选“任务运行超时自动停止”保障稳定性
内容的提问来源于stack exchange,提问作者chandhan02
相关产品推荐
相关产品推荐

