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

修改Python脚本删除CSV未列出的视频文件及解决权限错误

脚本错误修复方案

原脚本的问题分析

  • 权限错误原因:os.listdir(path)会返回目录下的子文件夹和文件,但os.remove()只能删除文件,尝试删除文件夹就会触发PermissionError。
  • 判断逻辑完全错误:filename == file_name是把单个文件名(比如Politics_news_3_p1)和整个路径列表做比较,永远不可能相等,结果就是所有内容都会被误删。
  • 路径层级处理缺失:CSV里的路径是子文件夹/视频文件的多层级格式,原脚本只遍历了一级目录,根本无法匹配这种路径。

修正后的脚本

import os
import pandas as pd

# 基础文件夹的根路径
base_dir = "/Users/shaimaa/Downloads/Code/audio-visual-dataset-master/results_news/news/"
# CSV文件的路径
csv_file = "/Users/shaimaa/Downloads/Code/audio-visual-dataset-master/results_news/news/Csv files/A_V_dataset.csv"

# 读取CSV里要保留的路径,转成集合(查起来更快)
keep_paths = set(pd.read_csv(csv_file)['fileName'].tolist())

# 递归遍历整个文件夹的所有文件
for root, _, files in os.walk(base_dir):
    for file in files:
        # 生成当前文件相对于基础文件夹的路径
        full_file_path = os.path.join(root, file)
        relative_path = os.path.relpath(full_file_path, base_dir)
        # 把系统默认的路径分隔符换成CSV里的/(比如Windows下的\转成/)
        relative_path = relative_path.replace(os.sep, '/')
        
        # 如果这个路径不在保留列表里,就删除文件
        if relative_path not in keep_paths:
            print(f"删除文件:{full_file_path}")
            os.remove(full_file_path)

修复要点说明

  • 用os.walk递归遍历:自动扫遍基础文件夹下所有层级的文件,只处理文件,跳过文件夹,彻底避免删文件夹触发的权限错误。
  • 生成匹配的相对路径:通过os.path.relpath生成和CSV格式一致的相对路径,还统一了路径分隔符,确保能准确匹配。
  • 用集合存保留路径:集合的查找效率比列表高得多,文件多的时候差异明显。
  • 逻辑清晰的判断:直接检查当前文件的相对路径是否在保留列表里,不在就删,不会再出现误判。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 18:47:04