Я работаю над проектом, где я хочу вытащить длинные списки данных из API (Strava) и поместить их в базу данных MySQL (не показано в коде). Существуют некоторые ограничения API, и они не позволяют извлекать более 200 записей за запрос. Поэтому мне нужно найти способ перебора результатов, но остановиться, когда достигнут конец списка (он никогда не возвращается полностью пустым и не выдает ошибок, независимо от того, сколько страниц я вытаскиваю).Итерация в Python с циклом до тех пор, пока не будет достигнут конец списка
Итак, я определил функцию, которая извлекает данные из API, а первый ключ в выводе JSON - это файл усилия, равный количеству записей в списке. Я пытаюсь использовать это число из функции в цикле, которую я создал для перебора по списку с помощью функции.
import urllib2
import json
strava_api='xxxxxxx'
def strava(segment_id,page,per_page):
access_token = strava_api
url='https://www.strava.com/api/v3/segments/' + str(segment_id) +'/leaderboard' +'?&access_token=' + access_token
final_url=url + "&page=" + str(page) + "&per_page=" + str(per_page)
json_obj=urllib2.urlopen(final_url)
data = json.load(json_obj)
effort_count=data['effort_count']
counter = 1
max_page = effort_count/200+1
for counter in range (1,max_page):
strava(894142,counter,200) # 894142 is an existing segment and 200 is the max number of records displayed
counter = counter + 1
Однако, когда я запустил это, я получаю сообщение об ошибке, что «effort_count» не определен. Это потому, что невозможно использовать переменную из функции в этом цикле? Есть ли обходной путь?
ps Я совершенно новый при кодировании, так что это очень хорошо. Я полностью ошибаюсь.
Это потому, что переменные, определенные в функции, являются локальными для этой функции. – sytech
effort_count является локальным для функции strava. – ArunDhaJ