[英]How to merge multiple json files with maintaining schema?
我有多个json文件(Benoni_0-100.json等),如下所示:
{
"matches":[
{
"platformId":"TR1",
"gameId":379560441,
"champion":62,
"queue":410,
"season":7,
"timestamp":1460529442141,
"role":"NONE",
"lane":"JUNGLE"
}
],
"startIndex":4200,
"endIndex":4201,
"totalGames":4201
}
当我尝试使用以下代码合并到两个文件时,它可以工作。
import json
with open("Benoni_0-100.json") as fo:
data1 = json.load(fo)
with open("Benoni_100-200.json") as fo:
data2 = json.load(fo)
data1['matches'].extend(data2['matches'])
with open("test.json", "w") as fo:
json.dump(data1, fo)
但是,我有多个文件,并希望批量合并。 当我使用以下代码尝试它时,它失败了。
data = '{"matches": []}'
folder = glob.glob("*.json")
for filename in folder:
with open(filename) as file:
data1 = json.loads(data)
datanew = json.load(file)
data1['matches'].extend(datanew['matches'])
with open("test.json", "w") as fo:
json.dump(data1, fo)
输出是:
TypeError: string indices must be integers
我已经尝试了几个小时的各种方法并且失败了。 谁能帮我?
编辑:使用以下代码解决它。
data = '{"matches": []}'
data_1 = json.loads(data)
folder = glob.glob("*.json")
for filename in folder:
try:
with open(filename) as fo:
data_new = json.load(fo)
data_1['matches'].extend(data_new['matches'])
except:
print(filename)
with open("test.json", "w") as fo:
json.dump(data_1, fo)
'matches'是一个列表,也可能是conactenate它
dict['matches'] += otherdict['matches']
如果您没有扩展dicts,但列表中有一个dicts列表
运行批处理合并代码,我没有收到任何错误,输出存储在test.json
。 你确定你没有在代码中的其他地方做某些事情会导致这个错误吗?
但需要注意的是,在生成的test.json
只能获得单个条目输出,因为在循环的每次迭代中都重新定义了data1
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.