簡體   English   中英

如何使用python將每個循環保存到新文件

[英]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&currency_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&currency_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&currency_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&currency_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&currency_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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM