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

如何用Python从动态命名多文件夹提取Whse Summary Week x Excel文件

提取特定Excel文件并保证可扩展性的实现方案

核心思路

遍历指定根目录下的所有子文件夹,通过规则匹配筛选出文件名符合Whse Summary Week x格式的Excel文件,将其统一归集到目标目录,同时通过模块化、配置化的设计保证方案的可扩展性。

具体实现(Python示例)

用Python文件操作库实现,代码兼顾灵活性和可读性:

import os
import shutil
import re

# -------------------------- 可配置参数区 --------------------------
SOURCE_ROOT = "/path/to/your/root/folder"  # 替换为你的根文件夹路径
TARGET_DIR = "/path/to/target/folder"      # 汇总文件存放路径
SUPPORTED_EXTS = ('.xlsx', '.xls', '.xlsm')  # 支持的Excel格式,可按需添加
# 正则匹配规则:兼容大小写,匹配"Whse Summary Week + 数字"的文件名(不含后缀)
FILE_NAME_PATTERN = re.compile(r'^whse summary week \d+$', re.IGNORECASE)
# -----------------------------------------------------------------

# 自动创建目标目录(不存在则创建)
os.makedirs(TARGET_DIR, exist_ok=True)

# 递归遍历所有子目录
for root, _, files in os.walk(SOURCE_ROOT):
    for file in files:
        file_name, file_ext = os.path.splitext(file)
        # 匹配文件名格式 + 校验文件后缀
        if FILE_NAME_PATTERN.match(file_name) and file_ext.lower() in SUPPORTED_EXTS:
            source_file_path = os.path.join(root, file)
            target_file_path = os.path.join(TARGET_DIR, file)
            
            # 处理重名文件:自动添加计数器后缀,避免覆盖
            counter = 1
            while os.path.exists(target_file_path):
                target_file_path = os.path.join(TARGET_DIR, f"{file_name}_{counter}{file_ext}")
                counter += 1
            
            # 复制文件到目标目录(如需移动文件,替换为shutil.move)
            shutil.copy2(source_file_path, target_file_path)
            print(f"已提取: {source_file_path} -> {target_file_path}")

可扩展性设计要点

  • 配置中心化:所有可变参数(根路径、目标路径、支持的文件格式、匹配规则)都集中在代码开头的配置区,后续修改无需触碰核心遍历逻辑
  • 灵活的匹配规则:用正则表达式代替固定字符串匹配,比如以后文件名改为Warehouse Summary Week xx或Whse Summary Wk x,只需修改正则规则即可适配
  • 格式兼容扩展:SUPPORTED_EXTS是元组结构,后续可直接添加新的Excel格式(如.xlsb)
  • 动作可扩展:当前实现是复制文件,如需移动、读取文件内容合并、上传到云存储等,只需修改文件操作的核心代码行
  • 异常处理扩展:可添加try-except块捕获文件权限不足、文件损坏等异常,结合日志模块记录问题,提升稳定性

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 14:57:23