如何自动删除旧HTML报告文件夹,仅保留24小时内的报告?
自动清理旧HTML报告文件夹方案
当然可以,你可以通过脚本+定时任务的组合来实现自动清理旧报告,以下是几种实用方案:
1. Python脚本实现(跨平台)
写一个简单的Python脚本,遍历报告存储目录,判断文件夹的创建时间,删除超过24小时的文件夹:
import os import datetime import shutil def cleanup_old_reports(report_dir): # 获取当前时间 now = datetime.datetime.now() # 24小时时间差阈值 cutoff = now - datetime.timedelta(hours=24) for item in os.listdir(report_dir): item_path = os.path.join(report_dir, item) # 只处理文件夹 if os.path.isdir(item_path): # 获取文件夹创建时间(Windows用getctime,Linux/macOS兼容处理) try: create_time = datetime.datetime.fromtimestamp(os.path.getctime(item_path)) except OSError: continue # 判断是否超过24小时 if create_time < cutoff: print(f"删除旧报告文件夹: {item_path}") shutil.rmtree(item_path) # 替换为你的报告存储目录 report_directory = "/path/to/your/html/reports" cleanup_old_reports(report_directory)
注意事项:
- 首次运行时可以先注释掉
shutil.rmtree(item_path),只打印要删除的文件夹,确认无误后再执行删除操作 - Linux系统中
os.path.getctime返回的是文件最后修改时间,若需严格按创建时间,可结合stat命令获取,不过多数场景下修改时间已满足需求
2. Shell脚本实现(Linux/macOS)
用find命令快速实现,适合类Unix系统:
#!/bin/bash # 替换为你的报告存储目录 REPORT_DIR="/path/to/your/html/reports" # 查找并删除超过24小时的文件夹(-mtime +0 表示修改时间超过24小时) find "$REPORT_DIR" -type d -mtime +0 -exec rm -rf {} \;
说明:
-type d指定只处理文件夹- 测试阶段可以把
rm -rf换成echo,先确认要删除的目标列表,再执行实际删除
3. 定时执行配置
脚本写好后,设置定时任务让它自动运行:
Windows系统
- 打开「任务计划程序」,创建新任务
- 触发条件:设置为每天执行一次,或每隔几小时执行一次
- 操作:选择「启动程序」,指向你的Python脚本(或打包后的.exe文件),也可以用批处理文件调用脚本
Linux/macOS系统
- 编辑crontab:执行
crontab -e - 添加定时任务,比如每天凌晨2点执行清理脚本:
0 2 * * * /path/to/your/cleanup.sh - 保存退出后,cron会自动加载该任务
内容的提问来源于stack exchange,提问作者Barath
相关产品推荐
相关产品推荐

