我有一个JSON文件,其中包含100万个条目(大小:405 Mb)。它看起来像这样:
[
{
"orderkey": 1,
"name": "John",
"age": 23,
"email": "john@example.com"
},
{
"orderkey": 2,
"name": "Mark",
"age": 33,
"email": "mark@example.com"
},
...
]
数据是按"orderkey"排序的,我需要对数据进行 Shuffle 。
我尝试应用下面的Python代码。它适用于较小的JSON文件,但不适用于我的405 MB文件。
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文件的结尾有"}"。我有无效的[{...},{...}]}
。
删除"}"修复了问题。
2条答案
按热度按时间nzrxty8p1#
发现问题是JSON文件的结尾有“}”。我有
[{...},{...}]}
,这不是有效的格式。最后删除“}”修复了问题。
提供的python代码可以工作。
b4lqfgs42#
这应该是理想的,除非你有内存限制。
如果你正在寻找另一种方法,并希望对大型集合进行基准测试,你可以使用sci-kit learn libraries shuffle函数。
注:必须安装名为Scikit learn的附加软件包。(
pip install -U scikit-learn
)