You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

删除目录中10分钟以上旧文件脚本报错求助(附代码)

问题分析与脚本修复

原脚本的核心错误

  1. 路径赋值错误:file_path = os.path.isfile(os.path.join(...)) 这行将布尔值(判断是否为文件的结果)赋值给了file_path,后续调用os.path.getctime(file_path)时,传入布尔值会直接触发参数错误,因为该函数需要有效的文件路径。
  2. 日志格式化错误:log_entry = {time.ctime(creation_time)} - {file} 使用了集合语法,会导致语法错误,正确的做法是用字符串格式化拼接日志内容。
  3. 未过滤子目录:原脚本没有判断遍历对象是否为文件,会将子目录纳入处理,导致后续操作报错。

修复后的完整脚本

import os
import time

trigger_file_dir = "/appl/wsl/itws/test"
log_file_path = "/appl/wsl/itws/stale_files.log"

current_time = time.time()
# 10分钟对应的秒数
stale_threshold = 60 * 10

# 遍历目标目录下的所有条目
for file_name in os.listdir(trigger_file_dir):
    # 拼接完整的文件路径
    full_file_path = os.path.join(trigger_file_dir, file_name)
    
    # 跳过子目录,只处理文件
    if not os.path.isfile(full_file_path):
        continue
    
    # 获取文件创建时间(注:Unix系统下ctime是文件状态最后变更时间,Windows是创建时间;若需Unix下严格创建时间,可改用os.stat(full_file_path).st_birthtime,部分旧Linux系统不支持)
    creation_time = os.path.getctime(full_file_path)
    
    # 判断文件是否超过10分钟未更新/创建
    if current_time - creation_time > stale_threshold:
        # 格式化日志内容,添加换行符保证日志可读性
        log_entry = f"{time.ctime(creation_time)} - {file_name}\n"
        # 写入日志文件
        with open(log_file_path, "a") as log_file:
            log_file.write(log_entry)
        
        # 删除目标文件
        os.remove(full_file_path)

额外说明

  • 创建时间兼容性:如果你的运行环境是Unix/Linux,且需要严格获取文件的创建时间而非状态变更时间,可以将creation_time的获取代码替换为:
    creation_time = os.stat(full_file_path).st_birthtime
    
    注意部分旧版本Linux系统可能不支持st_birthtime属性,需根据实际环境调整。
  • 异常处理建议:生产环境使用时,建议添加异常捕获逻辑,处理文件删除时可能出现的权限不足、文件被占用等情况,避免脚本中断,示例如下:
    try:
        os.remove(full_file_path)
    except Exception as e:
        # 可将错误信息写入日志
        error_log = f"Failed to delete {file_name}: {str(e)}\n"
        with open(log_file_path, "a") as log_file:
            log_file.write(error_log)
    

内容的提问来源于stack exchange,提问作者shubi naidu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 04:50:25