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

如何使用Python删除文件名含指定日期之前的文件

问题解答

可行性结论

完全可行,只要能从文件名中提取出日期并与指定日期做数值比较,就能精准筛选并删除符合条件的文件。

当前代码的问题

你现有的代码仅会删除文件名中包含刚好35天前日期的文件,无法覆盖所有日期早于35天前的文件(比如36天、40天前的文件都会被遗漏),不符合你“删除所有早于指定日期文件”的核心需求。

修正后的代码

import os
from datetime import datetime, timedelta

user_id = 126155
target_dir = f"C:/Users/{user_id}/OneDrive/Onedrive - Anderson/"
# 计算35天前的日期,转为datetime对象用于比较
cutoff_date = datetime.today() - timedelta(days=35)

# 遍历目标目录下的所有文件
for filename in os.listdir(target_dir):
    # 仅处理CBD_0001_开头的文件
    if filename.startswith('CBD_0001_'):
        # 提取文件名中的日期部分(兼容带后缀的文件,比如CBD_0001_01012024.txt)
        date_str = filename.split('_')[-1].split('.')[0]
        try:
            # 将日期字符串转为datetime对象
            file_date = datetime.strptime(date_str, '%d%m%Y')
            # 若文件日期早于 cutoff_date,则执行删除
            if file_date < cutoff_date:
                file_full_path = os.path.join(target_dir, filename)
                print(f"正在删除文件: {filename}")
                os.remove(file_full_path)
        except ValueError:
            # 跳过日期格式不符合要求的文件,避免程序崩溃
            print(f"跳过格式异常文件: {filename}")

关键改进点

  • 日期比较逻辑:不再仅匹配单一日期字符串,而是将文件名中的日期转为datetime对象,直接和 cutoff 日期做大小比较,覆盖所有早于指定日期的文件。
  • 完整路径处理:用os.path.join拼接文件完整路径,避免因工作目录不一致导致的文件找不到问题。
  • 异常容错:加入try-except捕获日期格式错误的情况,防止程序中途终止。
  • 变量可读性优化:将id改为user_id,避免与内置函数重名,提升代码可维护性。

额外提示

  • 测试阶段可先注释掉os.remove(file_full_path),仅打印待删除文件,确认筛选逻辑无误后再执行删除操作。
  • 若需指定固定日期(而非相对天数,比如早于2024年1月1日),可直接将cutoff_date替换为datetime.strptime('01012024', '%d%m%Y')。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 14:41:04