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

Python脚本遍历目录提取视频文件时遇文件夹识别问题求助

解决Python视频整理脚本的文件夹识别与多格式匹配问题

问题根源

你的脚本崩溃是因为os.listdir()会返回目标路径下的所有文件和文件夹,但你直接对每个结果执行os.chdir()——文件不是目录,自然会报错。

关键修复与优化

  1. 识别文件夹:用os.path.isdir()判断路径是否为合法目录,只对文件夹执行进入操作
  2. 多格式匹配:把单一的.mp4换成包含所有目标格式的元组,endswith()支持直接传入元组实现多后缀匹配
  3. 路径拼接优化:用os.path.join()替代硬编码的\\,适配Windows/Linux/macOS等不同系统
  4. 避免目录混乱:操作文件时及时切回原目录,防止后续路径定位错误

优化后的完整代码

import os
import shutil

def pullout():
    # 定义需要匹配的视频格式元组
    video_extensions = ('.mp4', '.wmv', '.flv', '.avi')
    # 记录当前工作目录(用户输入的目标路径)
    root_dir = os.getcwd()
    
    for item in os.listdir(root_dir):
        item_full_path = os.path.join(root_dir, item)
        # 仅处理文件夹,跳过文件
        if os.path.isdir(item_full_path):
            os.chdir(item_full_path)
            # 遍历子文件夹内的所有文件
            for file in os.listdir():
                # 匹配目标视频格式(加lower兼容大写后缀)
                if file.lower().endswith(video_extensions):
                    target_path = os.path.join(root_dir, file)
                    shutil.move(file, target_path)
            # 切回根目录,避免后续路径混乱
            os.chdir(root_dir)

filepath = input("Enter file path\n")
os.chdir(filepath)
pullout()

额外说明

  • 加.lower()是为了匹配.MP4、.WMV这类大写后缀的文件,不需要可以直接去掉
  • 如果目标目录已有同名文件,shutil.move()在Windows会直接覆盖,Linux/macOS会报错,可根据需求添加重命名逻辑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 12:25:23