我正在努力将新数据附加到 JSON。我只是想从 API 调用 JSON 数据,并将其放入“匹配”下的 JSON 文件中。我正在创建一个包含以下内容的空白 JSON 文件,然后从那里开始。
{
"matches": [
]
}
这是我的代码,尽管我怀疑只有最后一行很重要:
print ("No records found...\n Creating new match history bank.")
file_handle = open(all_matches_index, "w+")
file_handle.write('{\n "matches": [\n ]\n}')
for game_id in game_ids:
full_match_data = watcher.match.by_id(my_region, game_id)
#this is the problem line:
file_handle.write(json.dumps({"matches" : full_match_data }, sort_keys=True, indent = 4, separators=(',', ': ')))
我尝试了一系列不同的解决方案,但网上似乎没有任何地方可以解决这个问题,或者至少我不明白我在读什么。我知道这是一个简单的问题,但我无法解决。
我尝试过的一些例子:
file_handle.write(json.dumps(full_match_data["matches"], sort_keys=True, indent = 4, separators=(',', ': ')))
file_handle["matches"].write(json.dumps(full_match_data, sort_keys=True, indent = 4, separators=(',', ': ')))
file_handle["matches"] = {**full_match_data, file_handle["matches"] sort_keys=True, indent = 4, separators=(',', ': ')))}
file_handle.write(json.dumps({"matches" : [full_match_data]}, sort_keys=True, indent = 4, separators=(',', ': ')))
file_handle.write(json.dumps(["matches" {full_match_data}], sort_keys=True, indent = 4, separators=(',', ': ')))
编辑 1:根据 Pranav Hosangadi 的回复进行更改,
首先,感谢您的回复,它包含的信息比简单的修复要多得多,这对我学习很有帮助。
我更改了我的代码,使其现在看起来如下:
file_handle = open(all_matches_index, "w+")
file_handle.write('{\n "matches": [\n ]\n}')
file_handle.close()
matches = []
for game_id in game_ids:
full_match_data = watcher.match.by_id(my_region, game_id)
matches.append(full_match_data)
with open(all_matches_index, "w") as file_handle:
json.dump(file_handle, {"matches": matches})
file_handle.close
不幸的是,它不起作用。它似乎想了很长时间(作为一个英特尔奔腾)然后返回一个空文件?
再次运行它会在文件中填充:
{
"matches": [
]
}
你能告诉我哪里出错了吗?
一旦我让它工作,我将切换到 pythonic 的方式。非常感谢。