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

Python 3.6按列表唯一标识符移动子文件夹文档的技术求助

Python文件分类解决方案(适配3.6版本)

嘿,作为Python新手遇到这种文件批量分类的需求太正常啦!我给你整理了一套简单易上手的方案,完全适配Python 3.6,一步步帮你把指定文件挪到对应文件夹里。

核心思路

咱们先理清楚要做的事儿:

  • 遍历源文件夹(比如你说的All/A)里的所有文件
  • 检查每个文件名是否包含你的目标标识符(比如768)
  • 给每个标识符创建对应的目标文件夹(如果不存在的话)
  • 把匹配的文件移动到对应的文件夹里

完整代码实现

首先咱们要用到Python内置的os和shutil模块,这俩模块在3.6里都是自带的,不用额外安装。

import os
import shutil

# ---------------------- 你需要根据自己的情况修改这些参数 ----------------------
# 源文件夹:就是存放待处理文件的地方(比如你的All/A文件夹)
source_directory = "./All/A"
# 目标标识符列表:把你需要匹配的ID都放这里
target_identifiers = ['768']  # 实际场景可以加更多,比如['768', '123', '921']
# 目标根文件夹:用来存放各个ID对应子文件夹的地方(比如这里用All文件夹)
target_root = "./All"
# ---------------------------------------------------------------------------

# 遍历源文件夹中的所有条目
for file_name in os.listdir(source_directory):
    # 拼接出文件的完整路径
    full_file_path = os.path.join(source_directory, file_name)
    
    # 只处理文件,跳过子文件夹
    if os.path.isfile(full_file_path):
        # 方式1:模糊匹配——检查标识符是否在文件名中
        for identifier in target_identifiers:
            if identifier in file_name:
                # 构建当前标识符对应的目标文件夹路径
                target_folder = os.path.join(target_root, identifier)
                # 如果目标文件夹不存在,就创建它
                if not os.path.exists(target_folder):
                    os.makedirs(target_folder)
                # 移动文件到目标文件夹
                shutil.move(full_file_path, os.path.join(target_folder, file_name))
                print(f"✅ 已移动文件: {file_name} -> {target_folder}")
                # 找到匹配的ID后就跳出循环,避免重复处理
                break

        # ---------------------- 可选:精准匹配方式 ----------------------
        # 如果你的文件名格式固定(比如都是'XXX - words'),可以用下面的精准匹配
        # try:
        #     # 从文件名中提取标识符部分
        #     extracted_id = file_name.split(" - ")[0]
        #     if extracted_id in target_identifiers:
        #         target_folder = os.path.join(target_root, extracted_id)
        #         if not os.path.exists(target_folder):
        #             os.makedirs(target_folder)
        #         shutil.move(full_file_path, os.path.join(target_folder, file_name))
        #         print(f"✅ 已移动文件: {file_name} -> {target_folder}")
        # except IndexError:
        #     # 跳过格式不符合的文件
        #     print(f"⚠️ 跳过不符合格式的文件: {file_name}")

注意事项

  • 路径问题:如果是Windows系统,路径可以用反斜杠(记得写两个\\)或者原始字符串,比如r".\All\A"
  • 复制 vs 移动:如果不想删除源文件,只想复制,把shutil.move换成shutil.copy2,这样还能保留文件的创建时间等元数据
  • 权限问题:确保你的Python程序有读取源文件和写入目标文件夹的权限,不然会报错哦
  • 精准匹配:如果文件名里的标识符是固定位置的,推荐用注释里的精准匹配方式,避免文件名其他地方出现相同数字导致误匹配

内容的提问来源于stack exchange,提问作者J. Dykstra

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 04:26:09