批量将子文件夹图片复制到父文件夹并删除指定子文件夹
解决方案
实现步骤
- 遍历目标根目录下的301~600号文件夹
- 提取每个父文件夹下的A子文件夹,将其中的图片文件复制到父文件夹
- 复制完成后,删除当前父文件夹下的A、B子文件夹
完整代码
import os import shutil # 替换为包含301、302...600文件夹的根目录路径 ROOT_DIR = r"C:\存放目标文件夹的根目录" # 遍历根目录下的所有子项 for parent_folder in os.listdir(ROOT_DIR): parent_path = os.path.join(ROOT_DIR, parent_folder) # 仅处理301到600之间的数字命名文件夹 if not os.path.isdir(parent_path): continue try: folder_num = int(parent_folder) if not (301 <= folder_num <= 600): continue except ValueError: continue # 定义A、B子文件夹路径 a_folder = os.path.join(parent_path, "A") b_folder = os.path.join(parent_path, "B") # 复制A文件夹内的图片文件到父文件夹 if os.path.exists(a_folder): for filename in os.listdir(a_folder): file_path = os.path.join(a_folder, filename) # 筛选常见图片格式,可自行添加其他格式 if filename.lower().endswith(('.png', '.jpg', '.jpeg', '.gif', '.bmp')): shutil.copy2(file_path, parent_path) print(f"已复制: {filename} -> {parent_folder}") # 删除A、B子文件夹 if os.path.exists(a_folder): shutil.rmtree(a_folder) print(f"已删除文件夹: {a_folder}") if os.path.exists(b_folder): shutil.rmtree(b_folder) print(f"已删除文件夹: {b_folder}") print("\n=== 所有操作执行完成 ===")
代码说明
- ROOT_DIR:必须手动替换为实际存放301~600文件夹的根目录,用原始字符串(r开头)可避免路径转义问题
- 图片格式筛选:代码包含了常见图片后缀,若需支持其他格式(如.webp),直接添加到后缀元组即可
- 文件夹过滤:通过数字范围判断,自动跳过根目录下的非目标文件夹
- 文件操作:使用
shutil.copy2保留文件元信息,shutil.rmtree彻底删除文件夹及内部所有内容
内容的提问来源于stack exchange,提问作者dtr43
相关产品推荐
相关产品推荐

