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

遍历目录删除指定后缀文件、跳过被占用文件并导出记录到CSV的问题

问题根源

你之前的两段代码核心问题都是异常捕获的范围不对:

  • 第一版把整个遍历逻辑包在try-except里,只要任意一个文件报错,整个遍历就会终止,直接进入pass逻辑
  • 第二版没有加任何异常捕获,只要遇到被占用的文件就会直接抛出错误终止运行,而且会把所有匹配到的文件都写入CSV,不管有没有删除成功

调整后可运行的代码

import os
import glob

# 配置参数,可根据需求修改
SCAN_PATH = "//network_pc_name/c$/Users"  # 扫描的网络路径,测试时可替换为你的测试路径
TARGET_EXT = (".ost", ".nst")  # 要删除的文件后缀,测试时可换成(".xlsx", ".txt")
OUTPUT_CSV = "deleted_files.csv"

success_deleted = []

# 遍历所有匹配后缀的文件
for file_path in glob.glob(f"{SCAN_PATH}/**", recursive=True):
    if not file_path.endswith(TARGET_EXT):
        continue
    try:
        # 尝试删除文件
        os.remove(file_path)
        # 删除成功才加入列表
        success_deleted.append(file_path)
    except PermissionError:
        # 捕获文件被占用、无权限的错误,直接跳过
        continue
    except OSError:
        # 其他系统级错误也跳过,避免崩溃
        continue

# 只把成功删除的文件路径写入CSV
with open(OUTPUT_CSV, "w", encoding="utf-8") as f:
    # 不需要表头可以删掉下行
    f.write("deleted_file_path\n")
    f.write("\n".join(success_deleted))

核心调整说明

  • 异常捕获放在单个文件的删除逻辑内,单个文件删除失败不会影响其他文件的处理
  • 单独维护success_deleted列表,只有删除成功的文件路径才会被记录,CSV中不会出现未删除的文件路径
  • 针对性捕获权限/占用相关的错误,不会吞掉所有异常,排查问题更方便
  • 可直接修改顶部的配置参数适配测试、正式场景,不需要调整业务逻辑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 14:36:08