#python #for-loop #python-requests
Вопрос:
У меня есть три группы данных. Я хочу собрать все данные из 3 групп. Однако я могу получить только 100 записей на запрос. В каждой группе более 100 записей. Я могу сказать, сколько данных в каждой группе, только после того, как получу первую партию данных для группы, из-за чего кажется, что я не могу использовать цикл while. Вот что у меня есть.
def getOTCdata(weekStartDate):
#set start and record limit
start = 0
records = 100000
groups = ["G1", "G2", "G3"]
#create for loop to get data with filters
for tier in tier:
params = {
"compareFilters": [
{ "compareType": "equal", "fieldName": "group", "fieldValue": group}
]
}
url = 'myURL'
data = requests.post(url, data=json.dumps(params))
#code to download data - removed so it's not bogged down
#check if the record total is more or less than the data remaining
recordTotal = (data.headers)['Records']
if start records < recordTotal:
start = =100
#I WANT TO CONTINUE IN GROUP 1
else:
#MOVE TO GROUP 2
Предположим, что у G1 150 записей. Я хочу, чтобы он еще раз запустился в G1. Поскольку я соберу все данные во второй очереди, я затем захочу перейти на G2. Проблема в том, что я не знаю общего количества записей, пока не сделаю запрос и не загружу данные, поэтому я не могу использовать цикл while сразу после цикла for.
Ответ №1:
Используйте цикл while
recordTotal = (data.headers)['Records']
while start records < recordTotal:
start = 100
Он не выйдет до тех пор, пока не будет выполнено условие start записи
Я также изменил start на start = 100
, если вы хотите, чтобы переменная start каждый раз увеличивалась на 100.
Комментарии:
1. Будет ли это затем запускать цикл for в той же группе? Похоже, что это просто увеличит общее количество стартов и не пройдет через цикл.
2. когда он покидает цикл while после выполнения условия, он останется в цикле for, в который он был вложен. если цикл for равен G1, вы можете просто использовать
break
его для выхода из цикла for.3. Будет ли он сам сбрасываться до 0 после выполнения условия?