Python 实现 移动指定名称的文件夹,保留原始目录结构

📅 2026/7/5 13:51:49
Python 实现 移动指定名称的文件夹,保留原始目录结构
Python 实现 移动指定名称的文件夹保留原始目录结构flyfish源目录结构原始结构源文件夹/ ├─ 车间A/ │ ├─ 设备A/ ← 会被移动 │ └─ 设备B/ ← 不移动 ├─ 车间B/ │ └─ 生产线1/ │ ├─ 设备A/ ← 会被移动 │ └─ 设备B/ ← 不移动目标目录结构移动后严格保留原结构目标文件夹/ ├─ 车间A/ │ └─ 设备A/ ├─ 车间B/ │ └─ 生产线1/ │ └─ 设备A/逻辑递归遍历源目录所有子文件夹支持无限层级精准匹配文件夹名仅移动 设备A完全忽略 设备B保留原始层级结构目标目录会和源目录结构完全一致安全移动自动创建目标目录结构处理重复/异常情况代码importosimportshutildefmove_specific_folder(source_root:str,target_root:str,target_folder_name:str设备A): 递归遍历源目录仅移动指定名称的文件夹保留原始目录结构 :param source_root: 源根文件夹路径要遍历的顶层目录 :param target_root: 目标根文件夹路径移动到的顶层目录 :param target_folder_name: 要移动的文件夹名称默认设备A # 校验源目录是否存在ifnotos.path.isdir(source_root):print(f源目录不存在{source_root})return# 递归遍历所有文件夹 (root当前路径, dirs子文件夹, files文件)forroot,dirs,filesinos.walk(source_root):# 遍历当前路径下的所有子文件夹fordir_nameindirs:# 仅匹配 设备A跳过 设备Bifdir_nametarget_folder_name:# 源文件夹完整路径src_folder_pathos.path.join(root,dir_name)# 计算【相对路径】核心保留原始目录结构relative_pathos.path.relpath(root,source_root)# 目标文件夹完整路径target_folder_pathos.path.join(target_root,relative_path,dir_name)try:# 自动创建目标目录的父级结构os.makedirs(os.path.dirname(target_folder_path),exist_okTrue)# 移动文件夹如果目标已存在会抛出异常这里做安全处理ifnotos.path.exists(target_folder_path):shutil.move(src_folder_path,target_folder_path)print(f移动成功{src_folder_path}→{target_folder_path})else:print(f目标已存在跳过移动{target_folder_path})exceptExceptionase:print(f移动失败{src_folder_path}原因{str(e)})if__name____main__:# 修改这两个路径 SOURCE_DIRrD:\源文件夹# 要遍历的顶层目录TARGET_DIRrD:\目标文件夹# 要移动到的目录# print(开始遍历并移动「设备A」文件夹...\n)move_specific_folder(SOURCE_DIR,TARGET_DIR)print(\n执行完成)把代码中SOURCE_DIR和TARGET_DIR换成自己的真实路径Windows路径前面加r避免转义。