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

如何用Python通过结构化数据批量移动指定home编号的文件

解决方案

可以通过定义结构化的映射关系替代繁琐的if/elif分支,让分组规则更易维护。以下是优化后的实现:

完整代码

import shutil
import os

source = '/path/to/source_folder'

# 用列表元组定义home编号组与目标文件夹的对应关系
# 格式:(home编号列表, 目标文件夹路径)
home_dest_mapping = [
    (['101', '103', '320'], '/path/to/FolderA'),
    (['555', '431', '105'], '/path/to/FolderB')
]

# 预先创建所有目标文件夹(避免移动时因文件夹不存在报错)
for _, dest_path in home_dest_mapping:
    if not os.path.exists(dest_path):
        os.makedirs(dest_path)

# 遍历源文件夹中的文件
for filename in os.listdir(source):
    full_file_path = os.path.join(source, filename)
    
    # 跳过子文件夹,只处理文件
    if not os.path.isfile(full_file_path):
        continue
    
    # 提取文件名中的home编号
    if filename.startswith('home') and '_' in filename:
        home_prefix = filename.split('_')[0]
        home_num = home_prefix[4:]  # 从"homeXXX"中截取三位编号
        
        # 匹配对应的目标文件夹并移动
        for group_nums, dest in home_dest_mapping:
            if home_num in group_nums:
                shutil.move(full_file_path, dest)
                break
        else:
            # 未匹配到任何分组时的处理(可根据需求修改)
            print(f"跳过无匹配分组的文件:{filename}")
    else:
        # 不符合命名格式的文件处理
        print(f"跳过格式不符的文件:{filename}")

关键优化点

  1. 结构化规则管理:所有分组规则集中在home_dest_mapping中,新增/修改分组只需调整这个列表,无需修改循环逻辑。
  2. 路径严谨性:用os.path.join拼接完整文件路径,解决原代码中因工作目录不一致导致的文件找不到问题。
  3. 容错处理:
    • 自动创建目标文件夹,避免移动失败
    • 跳过子文件夹、格式不符的文件
    • 对未匹配到分组的文件给出提示(可按需改为移动到默认文件夹或其他操作)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 04:40:55