Python 在for循环中为true时尝试/例外

Python 在for循环中为true时尝试/例外,python,loops,exception,Python,Loops,Exception,以下代码将从API收集数据,try/except子句将有助于处理多个错误(来自身份验证、索引等)。 只有一个错误(身份验证错误),我正在使用while True重复API调用,以确保我获得数据,并且在尝试一两次后会得到。然而,如果我以任何方式得到另一个错误,它将无限循环,我无法打破它,因此它将进入下一个迭代。我试图创建一个计数器,如果计数器达到一个数字,则(通过或继续或中断),但它不工作 ## Create a array to loop to: data_array_query = pd.da

以下代码将从API收集数据,try/except子句将有助于处理多个错误(来自身份验证、索引等)。 只有一个错误(身份验证错误),我正在使用
while True
重复API调用,以确保我获得数据,并且在尝试一两次后会得到。然而,如果我以任何方式得到另一个错误,它将无限循环,我无法打破它,因此它将进入下一个迭代。我试图创建一个计数器,如果计数器达到一个数字,则(
通过
继续
中断
),但它不工作

## Create a array to loop to:
data_array_query = pd.date_range(start_date,end_date,freq='6H')

#This is my idea but is not working
#Create a counter
counter = 0

#Loop through the just created array
for idx in range(len(data_array_query)-1):
    ## If counter reaches move on to next for loop element
    while True:
        if counter>=5:
            break
        else:
            try:
                start_date  = data_array_query[idx]
                end_date = data_array_query[idx+1]

                print('from',start_date,'to',end_date)

                df = api.query(domain, site_slug, resolution, data_series_collection, start_date=str(start_date), end_date=str(end_date), env='prod', from_archive=True, phase='production').sort_index()
                print(df.info())
                break
            except Exception as e:
                print(e)
                counter +=1
                print(counter)

因此,运行这段代码几天的结果表明,当它运行5次时(这是我设置的最大计数器),它确实会中断,但它会中断整个循环,我只希望它移动到下一个日期


任何帮助都将不胜感激,

您需要使用break语句来摆脱while True循环。传递并继续具有固定迭代次数的循环的工作。虽然循环可以永远继续(因此名称不同)

我尝试过,但它也停止了for循环。@JuanHurtado python不应该这样做。你确定你做得对吗?@Michaelhofman你是对的。实际上我忘了再次将计数器重置为0。这解决了一切。