如何用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
相关产品推荐
相关产品推荐

