2017-08-07 75 views
2

我目前正在使用Python 3編寫的API工具,它查詢多個URL以獲取API數據,然後將結果寫入單個.JSON文件。我已經設法讓這個工作,但似乎腳本運行,但只有最後一個API請求被保存。Python 3 - 將多個API查詢寫入單個JSON文件

我想要的是每個請求都有自己的行。這是我迄今爲止查看以前的問題所做的,但它仍然只保存最後一次API請求。請你能提醒我做錯了什麼?道歉,這可能看起來很簡單,但我完全不熟悉Python。

最佳, Stig0501

import requests 
import json 

urls = ["https://api.chucknorris.io/jokes/random", 
    "http://api.icndb.com/jokes/random"] 

final_data = [] 

headers = {'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.81 Safari/537.36'} 

for url in URLs: 
data = requests.get(url, headers=headers).json() 
final_data.update(data) 

with open ('output.json', 'w') as f: 
    for fd in final_data: 
    json.dump(fd, f) 
f.write('\n') 
+0

如果每個'data'具有相同的密鑰,然後在'final_data'的條目將與每個請求所覆蓋。 –

+0

將'final_data'改爲'list'。 –

+0

將'final_data'改爲'list'。 –

回答

0

你可以做的final_data列表

final_data = [] 

並追加請求數據

final_data.append(data) 

該文件將包含所有請求。

對於每個請求是在其自己的行:

for fd in final_data: 
    json.dump(fd, f) 
    f.write("\n") 
+0

嗨Hakran,謝謝你的快速回復。我已經試過了,現在我得到了所有的數據,但它仍然在同一行。我已經在問題中更新了我的代碼,現在的情況如下 – Stig0501

+0

您可以在'json.dump(fd,f)'後面加上'f.write(「\ n」)' –

+0

更新您的代碼,問題描述不能解釋代碼中發生了什麼。 '但只保存最後一個API請求'不再正確。 –

相關問題