如何遍历文件夹并将子目录下指定Excel文件按所属目录分组导出JSON
按目录分组导出Excel文件列表JSON解决方案
修改后完整代码
import os import json # 根目录用raw字符串定义,避免路径转义问题 myDir = r"\\iads011n\ContinuousTesting\DailyTesting\REPORTS" result = [] dir_id = 0 for path, subdirs, files in os.walk(myDir): # 收集当前目录下所有符合规则的文件 matched_files = [] for file in files: # 统一转小写判断后缀,简化多条件判断 if file.lower().endswith(('.xlsx', '.xls')) and "Release" in file and "Integrated" not in file: # 若需要保存文件绝对路径,将下方的file替换为os.path.join(path, file) matched_files.append(file) # 仅当当前目录存在符合要求的文件时加入结果 if matched_files: result.append({ "id": dir_id, "dir_name": os.path.basename(path), "files": matched_files }) dir_id += 1 # 导出时加indent参数生成格式化JSON,可读性更高 with open('XLList.json', 'w', encoding='utf-8') as json_file: json.dump(result, json_file, indent=4, ensure_ascii=False)
适配需求的实现说明
- 遍历维度从全局文件改为按目录处理,每个目录下先完成文件筛选再判断是否录入结果,自动适配1~4个不等的文件数量要求,自动跳过无符合文件的目录
- 优化了文件后缀判断逻辑,无需分别判断大小写的XLS/XLSX格式
- 导出JSON新增编码参数和格式化参数,避免中文乱码,输出结构和你需要的分组效果完全匹配
- 如果需要存储文件的完整绝对路径,只需将
matched_files.append(file)修改为matched_files.append(os.path.join(path, file))即可
内容的提问来源于stack exchange,提问作者Filip Daniel
相关产品推荐
相关产品推荐

