如何从所有子目录中一次性读取全部JSON文件?
多级子目录批量读取JSON文件实现方案
你当前使用的glob.glob("/./*.json")只能匹配对应目录下第一层的JSON文件,无法遍历子目录内容,可按以下两种方案实现需求:
方案1:使用glob递归模式(Python 3.5及以上版本支持)
开启recursive=True参数,搭配**通配符即可匹配任意层级子目录下的文件:
import glob import json # 替换路径前缀为你需要遍历的根目录,**会匹配所有层级子目录 json_path_list = glob.glob("./**/*.json", recursive=True) # 批量读取所有JSON内容的示例 json_data_list = [] for path in json_path_list: with open(path, "r", encoding="utf-8") as f: json_data_list.append(json.load(f))
- 注意:
**通配符仅在recursive=True时生效,若需要遍历绝对路径下的内容,将前缀替换为对应绝对路径即可,例如/data/project/**/*.json。
方案2:使用pathlib实现(Python 3.4及以上版本推荐)
pathlib的rglob方法默认递归匹配所有子目录,路径处理逻辑更简洁:
from pathlib import Path import json # 替换为你要遍历的根目录路径 root_path = Path("./") json_path_list = list(root_path.rglob("*.json")) # 批量读取所有JSON内容的示例 json_data_list = [] for path in json_path_list: with open(path, "r", encoding="utf-8") as f: json_data_list.append(json.load(f))
- 优势:面向对象的路径处理方式,不需要额外配置递归参数,适配不同操作系统的路径规则更省心。
内容的提问来源于stack exchange,提问作者user13992669
相关产品推荐
相关产品推荐

