如何在pandas中导入并读取多个不同目录下的同名json文件
实现方案
核心思路
使用Python内置的os模块读取父目录下的所有子文件夹名,遍历拼接出完整的json文件路径,循环读取每个文件内容即可。
可直接运行的代码
import os import json # 你已定义的变量 path = '/messages/inbox/' file = '/message_1.json' # 可选:定义列表存储所有json解析结果 all_msg = [] # 遍历inbox目录下的所有子项 for folder_name in os.listdir(path): # 拼接得到完整json路径,用os.path.join更稳妥兼容不同操作系统 full_path = os.path.join(path, folder_name, file.lstrip('/')) # 可选:判断路径是否存在,避免因异常文件导致报错 if not os.path.exists(full_path): continue # 读取解析json with open(full_path, 'r', encoding='utf-8') as f: obj = json.load(f) all_msg.append(obj)
原代码问题说明
- 原
for循环的遍历对象可以用os.listdir(path)获取inbox下的所有子文件夹名 - 原
with open语句缩进错误,放在for循环外只会执行一次,仅能读取最后一个路径的文件 - 原代码
open('new_file')给变量加了引号,变成了读取固定名为new_file的文件,而非读取变量存储的路径
可选简化方案(Python3.4+ 推荐)
使用pathlib模块处理路径更简洁:
from pathlib import Path import json root = Path('/messages/inbox/') all_msg = [] # 直接匹配所有子文件夹下的message_1.json文件 for json_file in root.glob('*/message_1.json'): with open(json_file, 'r', encoding='utf-8') as f: all_msg.append(json.load(f))
内容的提问来源于stack exchange,提问作者shorttriptomars
相关产品推荐
相关产品推荐

