2017-02-01 3 views
0

Есть ли способ добавить отдельные объекты JSON в json-файл, находясь в цикле for в python. Я бы предпочел не хранить все свои данные в одном гигантском объекте json и выгружать его все сразу, так как я планирую выполнить миллионы запросов API. Я хотел бы сделать один запрос API, выгрузить результат в файл JSON, а затем перейти к следующему запросу API и сбросить его в тот же файл JSON.Интенсивное добавление к файлу JSON в Loop

Приведенный ниже код перезаписывает файл JSON, я ищу что-то, что добавляет.

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

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

Такой, что:

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

type(data) 
>> dict 

r.json выглядит примерно так:

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

Вы пробовали что-нибудь? Было бы более полезно, если бы вы могли показать нам, где вы застряли, или псевдокод того, что вы пытаетесь выполнить. – ilke444

+0

уверен. его очень простая задача - вот почему я не включил никакого кода. – eljusticiero67

ответ

1

Update

Ну так как я не имею доступа к API Я просто разместил несколько ответов образца в формате, который вы предоставили, внутри массива.

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