You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用pathlib遍历目录JSON文件转Pandas DataFrame遇JSONDecodeError

问题分析与解决

你的报错是因为遍历目录时读取了非JSON格式的文件(比如系统隐藏文件、临时文件,像Mac的.DS_Store或Windows的临时缓存文件),或者存在空的JSON文件,这些文件无法被json.loads()解析。单文件测试时你指定了明确的JSON文件,所以没问题,但循环会扫到目录里所有文件。

修复方案

1. 只处理.json后缀的文件

在循环里增加后缀判断,确保只读取JSON格式文件:

2. 增加异常捕获,跳过有问题的文件并排查

加入try-except块,捕获解析错误时打印文件名,方便定位问题文件。

修改后的完整代码:

import pathlib
import json
import pandas as pd

file_dir = "my_jsons_dir"
file_paths = pathlib.Path(file_dir)
data = []

for file in file_paths.iterdir():
    # 只处理后缀为.json的文件,跳过目录和其他格式文件
    if file.is_file() and file.suffix == ".json":
        try:
            # 读取并解析JSON
            dict_data = json.loads(file.read_bytes())
            # 标准化JSON并转为DataFrame
            df = pd.json_normalize(dict_data)
            # pd.json_normalize直接返回DataFrame,无需额外套pd.DataFrame.from_dict
            data.append(df)
        except json.JSONDecodeError as e:
            print(f"解析文件 {file.name} 出错: {e}")
            continue

# 按需合并所有DataFrame
final_df = pd.concat(data, ignore_index=True)

额外说明

  • pd.json_normalize()本身就返回DataFrame,原代码里的pd.DataFrame.from_dict()属于冗余操作,可以直接简化。
  • 如果确认目录里应该全是有效JSON文件,但仍报错,异常捕获会帮你快速定位到内容损坏或为空的问题文件。

内容的提问来源于stack exchange,提问作者M. Wood

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 01:23:15