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

Python使用os.walk查找各文件夹中测试编号最大的目标文件

基于os.walk实现各文件夹内最大测试编号文件定位

核心逻辑说明

  • 匹配规则对齐给定的文件名格式:统一识别file-Test{数字编号}-summary.xlsm格式的文件,自动从文件名中提取测试编号做大小对比
  • 严格依赖os.walk()完成全目录遍历,不使用其他目录扫描方法
  • 按独立文件夹维度做统计,每个目录下单独筛选编号最大的文件,不跨目录合并计算

可运行代码实现

import os
import re

def get_max_test_version_files(start_scan_dir: str):
    # 预编译文件名匹配正则,提升循环执行效率
    match_rule = re.compile(r"^file-Test(\d+)-summary\.xlsm$")
    scan_result = {}

    # 严格使用os.walk进行目录遍历
    for current_dir, _, file_list in os.walk(start_scan_dir):
        # 暂存当前目录下所有匹配的文件,格式为 {测试编号: 文件完整路径}
        dir_valid_files = {}
        for filename in file_list:
            match = match_rule.match(filename)
            if match:
                test_id = int(match.group(1))
                dir_valid_files[test_id] = os.path.join(current_dir, filename)
        # 取当前目录下编号最大的文件存入结果
        if dir_valid_files:
            max_test_id = max(dir_valid_files.keys())
            scan_result[current_dir] = dir_valid_files[max_test_id]
    
    return scan_result

# 测试调用入口
if __name__ == "__main__":
    # 替换为实际需要扫描的根目录路径
    scan_root = "/your/target/root/path"
    folder_max_file = get_max_test_version_files(scan_root)
    # 打印扫描结果
    for folder_path, max_file_path in folder_max_file.items():
        print(f"扫描目录:{folder_path}")
        print(f"  最大测试编号文件:{max_file_path}")

实现注意点

  • 正则匹配替代字符串硬切割,能兼容测试编号位数不固定的场景(比如Test01、Test12这类两位编号,甚至后续扩展三位编号也无需修改代码)
  • 每个遍历到的目录单独维护有效文件列表,不会把子文件夹的文件错算到上级目录的统计范围内
  • 自动跳过不符合命名规则的文件,不会干扰正常匹配逻辑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.28 06:27:03