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

如何对含百万条数据的大型JSON文件进行随机打乱?

405MB大型JSON文件随机打乱时的格式错误解决

问题背景

手里有个包含100万条数据的JSON文件(大小405MB),数据按orderkey字段排好序,需要把数据随机打乱。用了一段在小型JSON文件上能正常运行的Python代码,但在这个大文件上直接报错。

尝试的代码

import json
import random

with open("sorted.json") as f:
     data = json.load(f)

random.shuffle(data)

with open("sorted.json") as f:
     json.dump(data, f, indent=2)

触发的错误

~/Desktop/shuffleData$ python3 toShuffle.py 
Traceback (most recent call last):
  File "/home/andrei/Desktop/shuffleData/toShuffle.py", line 5, in <module>
    data = json.load(f)
  File "/usr/lib/python3.10/json/__init__.py", line 293, in load
    return loads(fp.read(),
  File "/usr/lib/python3.10/json/__init__.py", line 346, in loads
    return _default_decoder.decode(s)
  File "/usr/lib/python3.10/json/decoder.py", line 340, in decode
    raise JSONDecodeError("Extra data", s, end)
json.decoder.JSONDecodeError: Extra data: line 1 column 403646259 (char 403646258)

解决过程

盯着报错信息看,提示JSON存在额外数据。检查文件后发现,JSON数组末尾多了一个多余的},整个文件格式变成了[{...},{...}]}——正常格式应该是[{...},{...}]。手动删掉这个多余的}后,再运行代码就可以正常执行了。

额外优化提示

处理这种几百MB的大型JSON文件时,直接用json.load()把整个文件加载到内存,可能会占用大量内存导致性能问题。如果后续遇到类似场景,可以考虑把JSON改成每行一个对象的格式,然后逐行读取、打乱后再写入,这样能有效降低内存占用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 02:23:11