2017-02-01 7 views
0

Pythonのforループ中に単一のJSONオブジェクトをjsonファイルに追加する方法はありますか?何百万というAPI要求を実行する予定であるため、すべてのデータを1つの巨大なjsonオブジェクトに格納して一度にダンプしたくないのです。 1つのAPIリクエストを作成し、その結果をJSONファイルにダンプし、次のAPIリクエストに移動して、と同じ JSONファイルにダンプします。ForループのJSONファイルにインクリメンタルに追加

以下のコードはJSONファイルを上書きしますが、私は追加するものを探しています。私はあなたのAPIへのアクセスを持っていないので、

{'attribute1':1, 'attribute2':10} 
+0

をあなたは何をしようとしたことがありますか?あなたがどこにいるのか、あなたが達成しようとしているものの擬似コードを示すことができれば、もっと役に立ちます。 – ilke444

+0

その非常に簡単な作業 - それは私がなぜコードを含んでいないのかです。 – eljusticiero67

答えて

1

更新まあ

with open('data.json') as outfile: 
    data = json.load(data, outfile) 

type(data) 
>> dict 

r.jsonは次のようになりますよう

for url in urls: 
    r = sesh.get(url) 
    data = r.json() 

    with open('data.json', 'w') as outfile: 
     json.dump(data, outfile) 

私はちょうどあなたが提供したフォーマットで、配列の中にいくつかのサンプル応答を入れました。

import json 

urls = ['{"attribute1":1, "attribute2":10}', '{"attribute1":67, "attribute2":32}', '{"attribute1":37, "attribute2":12}']; 
json_arr = [] 

for url in urls: 
    data = json.loads(url) 
    json_arr.append(data) 
    with open('data.json', 'w') as outfile: 
     json.dump(json_arr, outfile) 

基本的には、配列を保持し、その配列に各API応答を追加します。次に、累積JSONをファイルに書き込むことができます。また、異なるコード実行で同じJSONファイルを更新したい場合は、コードの先頭にある既存の出力ファイルを配列に読み込んでから、私の例を続けてください。これに

with open('data.json', 'w') as outfile: 

:この変更してみてください

を追加する



変更書き込みモード

with open('data.json', 'a') as outfile: 
+0

ありがとうございました - おそらく私はそれを明確にしませんでしたが、私はそれがjsonファイルに追加されることを望んでいました。 jsonオブジェクトをファイルに追加します(大きなjsonオブジェクトではありません)。ファイルをリロードしようとすると、jsonオブジェクトではなくエラーが発生します。 質問を編集して明確にします。 – eljusticiero67

+0

まあ、私はあなたに正確な解決策を与えるためにJSONの基本的な構造を見る必要があります –

+0

ありがとう。 – eljusticiero67

関連する問題