![](/img/trans.png)
[英]Python: Loop through a folder and save data from first tab of each file and save to new file on separate tabs
[英]How to save each loop to a new file with python
我試圖獲取json響應並將其另存為新文件。 為此,我試圖在一個范圍內循環請求,然后將每個json結果保存為一個新文件
我設法通過循環拉出請求,但是我不知道如何將每個輸出保存到新文件中。
import requests
import json
for i in range(1, 5):
vino = requests.get('https://www.vivino.com/api/explore/explore?country_code=dk¤cy_code=DKK&grape_filter=varietal&merchant_id=&min_rating=1&order_by=&order=desc&page='+str(i)+'&price_range_max=2500&price_range_min=0&wine_type_ids[]=1&wine_type_ids[]=2')
data = vino.json()
with open('data' + str(i) + '.json', 'w') as outfile:
json.dump(data, outfile)
不知道為什么Milad建議使用write()
-您的代碼基本上還不錯,只需要正確執行縮進即可。 您可以執行以下操作:
import requests
import json
for i in range(1, 5):
vino = requests.get('https://www.vivino.com/api/explore/explore?country_code=dk¤cy_code=DKK&grape_filter=varietal&merchant_id=&min_rating=1&order_by=&order=desc&page='+str(i)+'&price_range_max=2500&price_range_min=0&wine_type_ids[]=1&wine_type_ids[]=2')
data = vino.json()
with open('data' + str(i) + '.json', 'w') as outfile:
json.dump(data, outfile)
請注意,最后一行的開頭是多余的空格,它們很重要,這就是人們使用縮進所指的空格。 閱讀一些Python教程可能會有所幫助
使此代碼稍微好一點,您可以通過執行以下操作使用更多的requests
接口:
import requests
import json
for page in range(1, 5):
vino = requests.get('https://www.vivino.com/api/explore/explore', params={
'country_code': 'dk',
'currency_code': 'DKK',
'grape_filter': 'varietal',
'min_rating': 1,
'page': page,
'wine_type_ids[]': [1, 2],
})
# raise an exception if this request wasn't successful
vino.raise_for_status()
data = vino.json()
with open('data' + str(page) + '.json', 'w') as outfile:
json.dump(data, outfile)
如果您要自己讀取輸出,則可以使用以下方式“漂亮打印”輸出:
with open('data' + str(page) + '.json', 'w') as outfile:
json.dump(data, outfile, sort_keys=True,
indent=4, separators=(',', ': '))
最后,如果您使用的是最新版本的Python3,我還將使用新的“格式字符串”:
with open(f'data{page}.json', 'w') as outfile:
json.dump(data, outfile, sort_keys=True,
indent=4, separators=(',', ': '))
因為它傾向於導致更容易閱讀的代碼…
這樣做:
import requests
import json
for i in range(1, 5):
vino = requests.get('https://www.vivino.com/api/explore/explore?country_code=dk¤cy_code=DKK&grape_filter=varietal&merchant_id=&min_rating=1&order_by=&order=desc&page='+str(i)+'&price_range_max=2500&price_range_min=0&wine_type_ids[]=1&wine_type_ids[]=2')
data = vino.json()
with open('data' + str(i) + '.json', 'w') as outfile:
outfile.write(data)
來自網站的響應已經包含json數據,但為字符串。 如果要將其保存到文件中,則只需保存該字符串,而無需在響應對象上調用json()
函數。 json()
方法會將這些數據解析為python對象(字典和列表)。 之后,您可以使用它來擺弄數據。 如果只想保存它,則不需要。
這將起作用:
import requests
for i in range(1, 5):
resp = requests.get('https://www.vivino.com/api/explore/explore?country_code=dk¤cy_code=DKK&grape_filter=varietal&merchant_id=&min_rating=1&order_by=&order=desc&page='+str(i)+'&price_range_max=2500&price_range_min=0&wine_type_ids[]=1&wine_type_ids[]=2')
data = resp.text
with open("data-{}.json".format(i), 'w') as outfile:
outfile.write(data)
嘗試這個
import requests
import json
for i in range(1, 5):
vino = requests.get('https://www.vivino.com/api/explore/explore?country_code=dk¤cy_code=DKK&grape_filter=varietal&merchant_id=&min_rating=1&order_by=&order=desc&page='+str(i)+'&price_range_max=2500&price_range_min=0&wine_type_ids[]=1&wine_type_ids[]=2')
data = vino.json()
with open('data' + str(i) + '.json', 'w') as outfile:
json.dump(data, outfile)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.