新しいデータを JSON に追加するのに苦労しています。API から JSON データを呼び出して、"matches" の下の 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 の方法に切り替えます。どうもありがとう。