You need to enable JavaScript to run this app. 求助:如何用Python根据文件名指定片段批量分类文件到对应文件夹
优惠活动
大模型
产品
解决方案
定价
更多

求助:如何用Python根据文件名指定片段批量分类文件到对应文件夹

按文件名片段批量整理图片的Python实现

实现逻辑

  • 调用Python内置的os库处理文件路径、shutil库执行文件移动操作,无需安装额外依赖
  • 遍历指定源文件夹下的所有图片文件
  • 对符合格式要求的文件名按下划线_拆分,取下标为1的片段(Python索引从0开始,对应文件名的第二个片段)作为分类文件夹名称
  • 自动创建不存在的分类文件夹,将对应文件移动到目标文件夹中
  • 文件名格式不符合要求的文件统一归类到_未分类文件夹,避免程序运行报错

完整代码

import os
import shutil

# -------------------------- 配置修改区 --------------------------
# 存放待整理图片的文件夹路径
# Windows系统路径请加r前缀,例如 r"C:\Users\用户名\Desktop\待整理图片"
source_folder = "/path/to/your/picture/folder"
# 需要处理的图片后缀,可按需增删
allowed_extensions = [".jpeg", ".jpg", ".png", ".gif"]
# 不符合命名规则的文件存放目录名称
unsorted_folder_name = "_未分类"
# ----------------------------------------------------------------

# 提前创建未分类文件夹
unsorted_path = os.path.join(source_folder, unsorted_folder_name)
os.makedirs(unsorted_path, exist_ok=True)

# 遍历源文件夹下的所有内容
for file_name in os.listdir(source_folder):
    # 拼接得到文件的完整路径
    file_full_path = os.path.join(source_folder, file_name)
    # 跳过子文件夹,仅处理文件
    if not os.path.isfile(file_full_path):
        continue
    # 校验文件后缀是否为需要处理的图片格式,忽略大小写
    file_ext = os.path.splitext(file_name)[1].lower()
    if file_ext not in allowed_extensions:
        continue

    # 拆分不带后缀的文件名
    file_name_no_ext = os.path.splitext(file_name)[0]
    name_segments = file_name_no_ext.split("_")

    # 判断文件名拆分后的片段数量是否符合要求
    if len(name_segments) >= 2:
        target_folder_name = name_segments[1]
    else:
        target_folder_name = unsorted_folder_name

    # 拼接目标分类文件夹的完整路径,不存在则自动创建
    target_folder_path = os.path.join(source_folder, target_folder_name)
    os.makedirs(target_folder_path, exist_ok=True)
    # 拼接目标文件的完整路径
    target_file_full_path = os.path.join(target_folder_path, file_name)

    # 执行文件移动操作
    shutil.move(file_full_path, target_file_full_path)

print("所有图片整理完成")

注意事项

  • 运行代码前请务必备份所有待整理图片,避免误操作导致文件丢失
  • 你给出的示例文件210526 BL RL4_QRS Eur F699-1-2-2-180_6702_02_03拆分后取到的第二个片段为QRS Eur F699-1-2-2-180,完全符合分类需求
  • 如果同一个分类文件夹下存在重名文件,shutil.move会直接覆盖原有文件,如有重名保留需求,可在移动文件前添加重命名逻辑,例如给重复文件名加序号后缀
  • 仅处理配置的后缀名文件,非图片格式的文件会保留在源文件夹中不做处理

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.16 16:54:04