如何用Python将含特定文件名的文件归类到指定文件夹?
正确实现按文件名特征整理文件的Python代码
先拆解你原代码里的核心错误:
- 遍历目录方式错误:
os.getcwd()返回的是当前路径字符串,不是文件列表,应该用os.listdir()或os.scandir()获取文件 - 字符串包含判断错误:Python里用
'关键词' in 文件名,没有contains()方法 - 文件夹重复创建:每次循环都调用
os.mkdir()会因文件夹已存在报错,需先判断或用os.makedirs(exist_ok=True) - 路径处理不规范:直接写
Pig/smallpig跨平台兼容差,要用os.path.join()拼接路径 - 存在变量名混乱、语法错误(比如
if if)、随意切换工作目录导致路径混乱等问题
以下是修正后的完整代码,实现将当前目录下包含指定关键词的文件移动到对应文件夹:
import os import shutil # 定义整理规则:关键词 -> 目标文件夹路径 rules = { 'smallpig': os.path.join('Pig', 'smallpig'), 'dog': 'Dog' } # 遍历当前目录下的所有条目 for item in os.listdir(): # 只处理文件,跳过子文件夹 if not os.path.isfile(item): continue filename = item # 检查每个规则 for keyword, target_dir in rules.items(): if keyword in filename: # 确保目标文件夹存在,不存在则递归创建 os.makedirs(target_dir, exist_ok=True) # 拼接目标文件路径 target_path = os.path.join(target_dir, filename) # 移动文件(如果要复制而非移动,把shutil.move改成shutil.copy2) shutil.move(filename, target_path) print(f"已移动文件: {filename} -> {target_path}") # 一个文件匹配到一个规则后就停止检查其他规则 break
代码说明:
- 用
rules字典统一管理关键词和目标文件夹,后续新增规则只需修改这个字典 os.makedirs(target_dir, exist_ok=True)会自动创建多层文件夹,且文件夹已存在时不会报错os.path.isfile(item)确保只处理文件,避免误操作子文件夹- 使用
shutil.move是移动文件(原位置文件会消失),如果需要保留原文件,替换成shutil.copy2(会保留文件元数据) - 每个文件匹配到第一个规则后就
break,避免一个文件被多次处理
内容的提问来源于stack exchange,提问作者cphysicixt
相关产品推荐
相关产品推荐

