Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 将30 Gb json文件拆分为较小的文件_Python 3.x - Fatal编程技术网

Python 3.x 将30 Gb json文件拆分为较小的文件

Python 3.x 将30 Gb json文件拆分为较小的文件,python-3.x,Python 3.x,我在读取30 GB大小的json文件时面临内存问题。在Python3.x中有没有像在unix中那样的直接方法,可以根据行将json文件拆分成更小的文件 e、 g.前100000条记录进入第一个slit文件,其余记录进入下一个子json文件?取决于您的输入数据,如果其结构已知且一致,则更难或更容易 在我这里的示例中,这个想法是使用一行一行地读取文件,并在可以从输入构造有效对象时写入新文件。这有点像手动解析 在现实世界中,何时写入新文件的逻辑在很大程度上取决于您的输入和您试图实现的目标 一些样本数据

我在读取30 GB大小的json文件时面临内存问题。在Python3.x中有没有像在unix中那样的直接方法,可以根据行将json文件拆分成更小的文件


e、 g.前100000条记录进入第一个slit文件,其余记录进入下一个子json文件?

取决于您的输入数据,如果其结构已知且一致,则更难或更容易

在我这里的示例中,这个想法是使用一行一行地读取文件,并在可以从输入构造有效对象时写入新文件。这有点像手动解析

在现实世界中,何时写入新文件的逻辑在很大程度上取决于您的输入和您试图实现的目标

一些样本数据

[
{
“颜色”:“红色”,
“值”:“#f00”
},
{
“颜色”:“绿色”,
“值”:“#0f0”
},
{
“颜色”:“蓝色”,
“值”:“#00f”
},
{
“颜色”:“青色”,
“值”:“#0ff”
},
{
“颜色”:“洋红”,
“值”:“#f0f”
},
{
“颜色”:“黄色”,
“值”:“#ff0”
},
{
“颜色”:“黑色”,
“值”:“000”
}
]
#创建一个生成每一行的生成器
lines=(在open('data.json')中l代表l)
#o用于在之前累积一些行
#写入文件
o=''
#itemCount用于计算有效json对象的数量
itemCount=0
#逐行读取文件以避免内存问题
i=-1
尽管如此:
尝试:
行=下一行(行)
除停止迭代外:
打破
i=i+1
#忽略第一个方括号
如果i==0:
持续
#在这些数据中,我知道每5行就会有一个新的对象开始
#此逻辑取决于您的输入数据
如果i%4==0:
itemCount+=1
#此时,我能够创建AvalidJSON对象
#根据我对输入文件结构的了解
validObject=o+line.replace(“}\n”,“}\n”)
o=''
#现在将每个对象写入其自己的文件
将open(f'item-{itemCount}.json,'w')作为输出文件:
outfile.write(validObject)
其他:
o+=线


下面是一个带有工作示例的回复:

这是否回答了您的问题?或者这个?或者甚至是这个?