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

Python实现文件夹文件清理报错求助:超5个或超5天文件删除失败

问题解决与功能实现

先解决报错问题

你遇到的FileNotFoundError是因为os.listdir(path_file)返回的只是文件名,不是完整文件路径。直接用os.remove(file)时,Python会在当前脚本的工作目录下去找这个文件,而不是你指定的path_file文件夹里,自然找不到。

修正方法很简单:把文件夹路径和文件名拼接成完整路径,用os.path.join()来做:

import os

path_file = r'C:\...\new folder'
files = os.listdir(path_file)
for file in files[:5]:
    # 拼接完整路径
    full_file_path = os.path.join(path_file, file)
    # 先判断是不是文件,避免误删文件夹
    if os.path.isfile(full_file_path):
        os.remove(full_file_path)

实现完整需求:数量达标或超时自动删除

下面是满足你两个条件的完整代码:当文件数量≥5时删除最早的多余文件;同时删除所有存在时间超过5天的文件。

import os
import time

# 目标文件夹路径
target_folder = r'C:\...\new folder'
# 5天对应的秒数(1天=86400秒)
FIVE_DAYS = 5 * 24 * 60 * 60

def clean_files():
    # 获取文件夹内所有文件的完整路径,排除子文件夹
    all_files = []
    for filename in os.listdir(target_folder):
        full_path = os.path.join(target_folder, filename)
        if os.path.isfile(full_path):
            all_files.append(full_path)
    
    # 1. 处理文件数量超过5个的情况:删除最早创建的多余文件
    if len(all_files) > 5:
        # 按文件最后修改时间排序(Windows用getctime,Linux/macOS用getbirthtime)
        # 这里用getmtime(最后修改时间)兼容性更好
        all_files.sort(key=lambda x: os.path.getmtime(x))
        # 计算需要删除的数量:总数量-5
        num_to_delete = len(all_files) - 5
        for file_path in all_files[:num_to_delete]:
            try:
                os.remove(file_path)
                print(f"删除文件(数量超限):{file_path}")
            except Exception as e:
                print(f"删除失败 {file_path}: {e}")
    
    # 2. 处理存在时间超过5天的文件
    current_time = time.time()
    for file_path in all_files:
        # 获取文件最后修改时间的时间戳
        file_mtime = os.path.getmtime(file_path)
        if current_time - file_mtime > FIVE_DAYS:
            try:
                os.remove(file_path)
                print(f"删除文件(超时):{file_path}")
            except Exception as e:
                print(f"删除失败 {file_path}: {e}")

if __name__ == "__main__":
    clean_files()

代码说明

  • 路径拼接:始终用os.path.join()处理路径,避免Windows和Linux路径分隔符的问题。
  • 文件判断:用os.path.isfile()确保只处理文件,不会误删子文件夹。
  • 排序逻辑:按文件最后修改时间排序,优先删除最早的文件,你也可以改成os.path.getctime()(创建时间),根据需求调整。
  • 异常处理:用try-except捕获删除时的异常(比如文件被占用、权限不足),避免脚本崩溃。
  • 时间计算:把5天转换成秒数,和文件时间戳做差值比较,判断是否超时。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 11:25:34