有没有办法在python中的for循环中将单个JSON对象附加到json文件。我不希望将我的所有数据存储在一个巨大的json对象中并立即将其全部转储,因为我计划执行数百万个API请求。我想发出一个API请求,将结果转储到JSON文件中,然后转到下一个API请求并将其转储到相同的 JSON文件中。
下面的代码会覆盖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 :(得分:3)
<强>更新强>
因为我无法访问您的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: