如何使用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
相关产品推荐
相关产品推荐

