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

如何在Python中逐行读取4GB大JSON文件并转换为CSV?

解决方案:JSON Lines转CSV(大文件逐行处理)

错误原因

你的JSON文件是JSON Lines格式(每行一个独立的JSON对象),而非标准的JSON数组结构。json.load()会尝试将整个文件解析为单个JSON实体,因此第二行开始的内容会被判定为“额外数据”,触发JSONDecodeError。

修正后的代码

import json
import csv

# 设置CSV字段大小限制,避免大字段报错
csv.field_size_limit(10**9)

# 打开JSON和CSV文件,指定编码避免乱码
with open('name.json', 'r', encoding='utf-8') as json_file, \
     open('name.csv', 'w', newline='', encoding='utf-8') as data_file:
    
    csv_writer = csv.writer(data_file)
    header_written = False
    
    # 逐行读取并处理JSON,避免加载整个大文件到内存
    for line in json_file:
        line = line.strip()
        if not line:
            continue  # 跳过空行
        try:
            data = json.loads(line)
        except json.JSONDecodeError as e:
            print(f"解析行失败: {e}")
            continue
        
        # 第一次写入表头
        if not header_written:
            header = data.keys()
            csv_writer.writerow(header)
            header_written = True
        
        # 写入当前行的数据值
        csv_writer.writerow(data.values())

代码说明

  • 采用逐行读取模式,不会将4GB的整个文件加载到内存,避免内存溢出
  • 处理空行和解析失败的行,提升鲁棒性
  • 指定encoding='utf-8'避免中文等非ASCII字符乱码
  • 用header_written标记替代计数器,逻辑更清晰

内容的提问来源于stack exchange,提问作者Caxa

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 10:22:09