我有多个看起来像这样的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)
答案 0 :(得分:0)
'matches'是一个列表,可能也很简洁
dict['matches'] += otherdict['matches']
如果您不是扩展字典,而是列出 你有一个字典列表
答案 1 :(得分:0)
运行您的批处理合并代码,没有任何错误,并且输出存储在test.json
中。您确定不执行代码中其他地方的操作而导致此错误吗?
但是要注意的一点是,由于在循环的每次迭代中都重新定义了test.json
,因此您在得到的data1
中只会得到一个条目输出。