Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.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中的大型JSON文件_Python_Json_Pandas_Large Data_Ijson - Fatal编程技术网

绕过内存错误读取Python中的大型JSON文件

绕过内存错误读取Python中的大型JSON文件,python,json,pandas,large-data,ijson,Python,Json,Pandas,Large Data,Ijson,我正在使用下面的代码将几个JSON文件转换成CSV,一切正常。但是,当我试图转换一个更大的JSON文件(范围为2-4+GB)时,它会给出一个更大的值 现行代码 import json,熊猫 从展平\u json导入展平 #输入JSON的路径和文件名,但不附加“.JSON” file\u path=r'C:\path\To\file\u name' #打开并加载JSON文件 json_list=json.load(打开(文件_path+'.json',r',encoding='utf-8',err

我正在使用下面的代码将几个JSON文件转换成CSV,一切正常。但是,当我试图转换一个更大的JSON文件(范围为2-4+GB)时,它会给出一个更大的值

现行代码
import json,熊猫
从展平\u json导入展平
#输入JSON的路径和文件名,但不附加“.JSON”
file\u path=r'C:\path\To\file\u name'
#打开并加载JSON文件
json_list=json.load(打开(文件_path+'.json',r',encoding='utf-8',errors='ignore'))
#从定义的键名称中提取数据
key_list=[“已创建”、“电子邮件”、“身份”]
json_list=[{k:d[k]表示键_list中的k}表示json_list中的d]
#展平并转换为数据帧
json_列表_展平=(对于json_列表中的d,展平(d,'.'))
df=pandas.DataFrame(json列表)
#删除不需要的列
drop(df.filter(regex='identities.0.favorites | identities.0.likes')。列,axis=1,inplace=True)
#以原始文件名导出到同一目录中的CSV
将_csv=df.to_csv导出(文件_path+r'.csv',sep=',encoding='utf-8',index=None,header=True)
在网上查找类似问题后,我似乎可以利用它逐行解析大型JSON文件,而不是整个文件。您还将在我的代码中看到,我只提取某些JSON键以转换为CSV(
创建的
电子邮件
标识

我不确定实现它的最佳方式,但我认为在我的代码开始时会这样:

导入ijson
...
json_list=ijson.parse(打开(文件_path+'.json',r',encoding='utf-8',errors='ignore'))
...
我无法共享正在使用的完整JSON文件,因为它包含敏感信息。但您可以使用下面的示例数据进行测试。这只是一张唱片,但我想向你展示我正在使用的布局

JSON示例
[
{
“callId”:“abc123”,
“错误代码”:0,
“apiVersion”:2,
“状态代码”:200,
“状态原因”:“确定”,
“时间”:“2020-12-14T12:00:32.744Z”,
“注册时间戳”:1417731582000,
“UID”:“\u guid\u abc123==”,
“已创建”:“2014-12-04T22:19:42.894Z”,
“createdTimestamp”:1417731582000,
“数据”:{},
“首选项”:{},
“电子邮件”:{
“已验证”:[],
“未验证”:[]
},
“身份”:[
{
“提供商”:“facebook”,
“providerUID”:“123”,
“allowsLogin”:true,
“isLoginIdentity”:正确,
“isExpiredSession”:正确,
“最新更新”:“2014-12-04T22:26:37.002Z”,
“lastUpdatedTimestamp”:1417731997002,
“最新数据更新”:“2014-12-04T22:26:37.002Z”,
“oldestDataUpdatedTimestamp”:1417731997002,
“名字”:“约翰”,
“姓氏”:“能源部”,
“昵称”:“约翰·多伊”,
“profileURL”:https://www.facebook.com/John.Doe",
“年龄”:50岁,
“生日”:31岁,
“生日月”:12,
“生日”:1969年,
“城市”:“城市,国家”,
“教育”:[
{
“学校”:“高中名称”,
“学校类型”:“高中”,
“度”:空,
“startYear”:0,
“研究领域”:空,
“年底”:0
}
],
“教育水平”:“高中”,
“收藏夹”:{
“音乐”:[
{
“名称”:“音乐1”,
“id”:“123”,
“类别”:“音乐家/乐队”
},
{
“名称”:“音乐2”,
“id”:“123”,
“类别”:“音乐家/乐队”
}
],
“电影”:[
{
“名称”:“电影1”,
“id”:“123”,
“类别”:“电影”
},
{
“名称”:“电影2”,
“id”:“123”,
“类别”:“电影”
}
],
“电视”:[
{
“名称”:“电视1”,
“id”:“123”,
“类别”:“电视节目”
}
]
},
“followersCount”:0,
“性别”:“m”,
“家乡”:“城市、州”,
“语言”:“英语”,
“喜欢”:[
{
“名称”:“如1”,
“id”:“123”,
“时间”:“2014-10-31T23:52:53.0000000 Z”,
“类别”:“电视”,
“时间戳”:“1414799573”
},
{
“name”:“Like 2”,
“id”:“123”,
“时间”:“2014-09-16T08:11:35.0000000 Z”,
“类别”:“音乐”,
“时间戳”:“1410855095”
}
],
“区域设置”:“en_US”,
“姓名”:“约翰·多伊”,
“photoURL”:https://graph.facebook.com/123/picture?type=large",
“时区”:“-8”,
“缩略图URL”:https://graph.facebook.com/123/picture?type=square",
“用户名”:“john.doe”,
“已验证”:“正确”,
“工作”:[