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

