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

如何使用Python将指定目录子目录中的图片文件移动至新目录

没问题,这事儿用Python处理起来非常顺畅,我给你写一套实用的代码方案,还特意加上了重名文件处理的逻辑,避免不小心覆盖掉已有的图片:

Python实现批量移动子目录图片到目标目录

核心思路

  • 用os模块遍历源目录下的所有子目录,精准识别图片文件
  • 用shutil模块完成安全的文件移动操作
  • 自动处理重名文件,避免覆盖风险

完整代码示例

import os
import shutil

# 替换成你的源目录和目标目录路径(Windows系统用双反斜杠\\或原始字符串r"路径")
source_dir = "path/to/dir"
target_dir = "newpath/to/newdir"

# 定义需要识别的图片后缀(可根据需求添加/修改,比如.webp)
IMAGE_EXTENSIONS = {'.jpg', '.jpeg', '.png', '.gif', '.bmp', '.tiff'}

def move_images(source, target):
    # 确保目标目录存在,不存在则自动创建
    os.makedirs(target, exist_ok=True)
    
    # 遍历源目录下的所有层级目录与文件
    for root, dirs, files in os.walk(source):
        # 跳过源目录本身,只处理子目录内的图片(若要包含源目录的图片,删除此判断)
        if root == source:
            continue
        
        for file in files:
            # 获取文件后缀并转小写,避免大小写识别遗漏(比如.JPG)
            file_ext = os.path.splitext(file)[1].lower()
            if file_ext in IMAGE_EXTENSIONS:
                source_file = os.path.join(root, file)
                target_file = os.path.join(target, file)
                
                # 处理重名:若目标已存在同名文件,自动添加序号(如photo.jpg→photo_1.jpg)
                counter = 1
                while os.path.exists(target_file):
                    name, ext = os.path.splitext(file)
                    target_file = os.path.join(target, f"{name}_{counter}{ext}")
                    counter += 1
                
                # 执行移动操作
                shutil.move(source_file, target_file)
                print(f"已移动: {source_file} → {target_file}")

if __name__ == "__main__":
    move_images(source_dir, target_dir)
    print("所有图片移动完成!")

关键细节说明

  • 路径替换:务必把source_dir和target_dir换成你实际的路径,Windows系统注意路径格式
  • 图片格式扩展:如果需要识别更多图片类型,直接在IMAGE_EXTENSIONS集合里添加即可(比如.webp)
  • 遍历范围调整:如果希望把源目录本身的图片也一起移动,删掉if root == source: continue这一行
  • 重名保护:代码会自动给重复文件名加上递增序号,完全不用担心覆盖已有文件

注意事项

  • 建议先备份源文件或用少量文件测试,确保逻辑符合你的需求
  • 若子目录内有大量图片,移动过程可能需要一点时间,耐心等待即可
  • 确保Python进程有访问源目录和写入目标目录的权限

内容的提问来源于stack exchange,提问作者Mo.be

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 16:47:44