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

如何修改Python代码在二级目录创建分类文件夹并移动照片与视频文件

问题原因

之前的代码出现无限循环生成冗余文件夹的核心原因是:os.walk默认会递归遍历目标路径下所有层级的子目录,遍历过程中你新创建的Photos、Videos文件夹会被识别为新的待处理子目录,触发重复创建逻辑,最终形成无限嵌套的目录结构。

合并功能的完整实现代码

可以直接用下面的代码同时完成文件夹创建和文件分类移动,从根源避免无限循环问题:

import os
import shutil

# 配置参数
root_path = "root_path"
# 可根据需求扩展支持的后缀格式
photo_suffix = (".jpg", ".jpeg", ".png", ".gif", ".raw")
video_suffix = (".mp4", ".mov", ".avi", ".mkv", ".flv")

# 第一层:遍历root下的所有一级目录(1st_layer_*)
for first_dir in os.listdir(root_path):
    first_dir_path = os.path.join(root_path, first_dir)
    # 跳过非目录文件
    if not os.path.isdir(first_dir_path):
        continue
    
    # 第二层:遍历一级目录下的所有二级目录(2nd_layer_*)
    for second_dir in os.listdir(first_dir_path):
        second_dir_path = os.path.join(first_dir_path, second_dir)
        if not os.path.isdir(second_dir_path):
            continue
        
        # 创建分类文件夹
        photo_dir = os.path.join(second_dir_path, "Photos")
        video_dir = os.path.join(second_dir_path, "Videos")
        os.makedirs(photo_dir, exist_ok=True)
        os.makedirs(video_dir, exist_ok=True)
        
        # 遍历二级目录下的所有文件,分类移动
        for file_name in os.listdir(second_dir_path):
            file_path = os.path.join(second_dir_path, file_name)
            # 跳过子目录(避免处理刚创建的Photos/Videos文件夹)
            if os.path.isdir(file_path):
                continue
            
            # 移动照片
            if file_name.lower().endswith(photo_suffix):
                shutil.move(file_path, os.path.join(photo_dir, file_name))
            # 移动视频
            elif file_name.lower().endswith(video_suffix):
                shutil.move(file_path, os.path.join(video_dir, file_name))

代码说明

  • 采用分层遍历的逻辑,只处理固定层级的二级目录,不会遍历到新创建的Photos/Videos目录,彻底解决无限循环问题
  • 路径拼接使用os.path.join,兼容Windows、macOS、Linux全平台,避免硬编码路径分隔符导致的报错
  • os.makedirs添加exist_ok=True参数,重复运行不会因为文件夹已存在抛出异常
  • 后缀匹配增加了lower()处理,不管文件后缀是大写还是小写都能正常识别
  • 支持自定义扩展照片、视频的匹配格式,按需修改后缀元组即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 08:06:03