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

如何用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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 10:54:18