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

如何使用Python将文件名相似的文件批量移动到对应新建文件夹

我的images文件夹下有如下所示的文件列表:
文件列表示例

请问当存在多个文件名相似的文件时,如何创建新文件夹,并将这些相似文件移动到该文件夹中?
我是Python初学者。

我想要实现的效果如下:
效果示例


实现代码

用Python自带的os和shutil标准库就能实现,无需安装额外依赖,注释非常详细,你可以直接修改路径后运行:

import os
import shutil

# 配置images文件夹路径
# Windows系统可以加r前缀避免路径转义,比如r'C:\Users\你的用户名\Pictures\images'
# 如果把这个py文件放在images文件夹里,直接写 images_dir = './' 即可
images_dir = '/path/to/your/images'

# 遍历文件夹下所有内容,只处理文件,跳过子文件夹
for filename in os.listdir(images_dir):
    file_full_path = os.path.join(images_dir, filename)
    if not os.path.isfile(file_full_path):
        continue

    # 提取分类规则:以下划线拆分文件名,取第一个部分作为分类名
    # 比如「微信图片_20240501_123.jpg」分类为「微信图片」
    # 你可以按需修改这个规则,比如按前N个字符匹配:category = filename[:4]
    if '_' in filename:
        category = filename.split('_')[0]
    else:
        # 不满足规则的文件统一放到「其他」文件夹
        category = '其他'

    # 创建分类文件夹,已存在也不会报错
    category_folder = os.path.join(images_dir, category)
    os.makedirs(category_folder, exist_ok=True)

    # 移动文件到对应分类文件夹
    target_path = os.path.join(category_folder, filename)
    # 避免重名文件覆盖,不需要可以删掉这个判断
    if not os.path.exists(target_path):
        shutil.move(file_full_path, target_path)
    else:
        print(f'跳过重复文件:{filename}')

自定义规则说明

如果你的文件名相似判断逻辑不同,可以修改分类提取部分的代码:

  • 按前4个字符相同归为一类:category = filename[:4]
  • 按关键词分类:
    if '微信' in filename:
        category = '微信图片'
    elif '抖音' in filename:
        category = '抖音素材'
    else:
        category = '其他'
    

注意:运行代码前建议先备份images文件夹,避免误操作导致文件丢失。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 15:00:04