Python 3.5:如何根据文件名将图片移动到对应文件夹
按文件名分类移动图片的解决方案
嘿,我来帮你搞定按文件名分类移动图片的问题!从你给出的示例来看,核心逻辑是提取文件名里下划线后的数字标识(比如1600_01.jpg里的01),然后把对应文件归类到folder X文件夹中。下面我给你补全实现逻辑,分步骤说明:
核心思路
- 遍历原始文件夹中的所有图片文件
- 从每个文件名中提取分类编号(下划线后的数字部分)
- 根据编号创建对应的目标文件夹(不存在则自动创建)
- 将图片移动到匹配的目标文件夹
代码实现(Python)
我用Python的os和shutil模块来实现,这两个模块是处理文件系统的常用工具,代码简洁易懂:
import os import shutil import re # 用正则表达式更鲁棒,可选 # 替换成你的图片文件夹路径 source_directory = "/your/image/folder/path" # 遍历文件夹内所有文件 for file_name in os.listdir(source_directory): # 只处理图片文件,可根据需要添加格式(比如.png、.jpeg) if file_name.lower().endswith((".jpg", ".jpeg", ".png")): # 方法1:用字符串拆分提取分类编号(适合固定格式的文件名) # category_id = file_name.split("_")[1].split(".")[0] # 方法2:用正则表达式提取(更灵活,适配文件名格式小变化) match_result = re.search(r'_(\d+)\.', file_name) if not match_result: print(f"跳过不符合格式的文件:{file_name}") continue category_id = match_result.group(1) # 生成目标文件夹路径,这里把编号转成整数去掉前导零(比如01→1),保留前导零的话直接用category_id即可 target_folder = os.path.join(source_directory, f"folder {int(category_id)}") # 如果目标文件夹不存在,创建它(递归创建多级目录) if not os.path.exists(target_folder): os.makedirs(target_folder) # 拼接源文件和目标文件的完整路径 source_path = os.path.join(source_directory, file_name) target_path = os.path.join(target_folder, file_name) # 移动文件 shutil.move(source_path, target_path) print(f"已完成移动:{file_name} → {target_folder}")
关键细节说明
- 文件名提取逻辑:
- 字符串拆分法适合文件名格式完全固定的场景(比如都是
数字_数字.后缀) - 正则表达式法更灵活,即使文件名里有多个下划线,也能精准提取
.前的数字编号
- 字符串拆分法适合文件名格式完全固定的场景(比如都是
- 文件夹创建:
os.makedirs会自动创建不存在的目录,不用担心报错 - 文件移动:
shutil.move既可以移动文件,也能处理跨磁盘移动的情况(如果需要)
注意事项
- 操作前务必备份图片文件!可以先拿少量文件测试代码逻辑,避免误操作
- 如果目标文件夹需要建在其他位置,修改
target_folder的路径即可,不用和源文件夹同目录 - 代码里的
.lower()是为了兼容大小写后缀(比如.JPG)
内容的提问来源于stack exchange,提问作者ZenB883
相关产品推荐
相关产品推荐

