多次调用pd.read_json读取JSON文件时报ValueError的原因是什么
错误原因
该报错并非因为多次调用pd.read_json方法导致,触发ValueError: Expected object or value的核心原因是第二个待读取的test2.json存在异常,常见异常场景如下:
- 文件路径拼写错误:检查路径中的
Python Pratice是否和实际文件夹名一致(注意正确拼写为Practice,大概率是手误拼写错误导致找不到目标文件),或test2.json已被移动、删除 test2.json为空文件:文件中无任何内容,无法解析出有效JSON对象test2.json格式不合法:存在语法错误(如引号不配对、末尾多余逗号)、文件编码不符合预期(如带BOM头的UTF-8编码)- 权限不足:当前执行Python脚本的用户没有
test2.json的读取权限
解决步骤
- 首先验证文件路径有效性,执行如下代码确认文件状态:
import os test2_path = '/Users/pmall/Desktop/Python Pratice/test2.json' # 输出True说明路径正确、文件存在 print("文件是否存在:", os.path.exists(test2_path)) # 输出为0说明文件为空 print("文件大小(字节):", os.path.getsize(test2_path))
- 若文件存在且非空,先用Python内置json模块校验文件格式合法性:
import json with open(test2_path, 'r', encoding='utf-8') as f: try: json_data = json.load(f) print("JSON格式合法,内容预览:", json_data[:2] if isinstance(json_data, list) else json_data) except Exception as e: print("JSON格式错误:", e)
如果这一步提示格式错误,直接根据报错修正test2.json的语法即可。
3. 根据JSON的存储格式调整读取参数:
- 如果是带BOM的UTF-8编码文件,添加编码参数:
df2 = pd.read_json(test2_path, encoding='utf-8-sig')
- 如果文件是每行存储一个独立JSON对象的多行格式,添加行模式参数:
df2 = pd.read_json(test2_path, lines=True)
内容的提问来源于stack exchange,提问作者pmallepu
相关产品推荐
相关产品推荐

