尝试在python执行中的except语句

时间:2018-11-06 03:39:27

标签: python pandas lambda

假设我正在调用一个Web api,在超出限制后需要等待4秒钟。如果遇到异常,使用tryexcept循环和时间包可以使程序暂停。如果我在迭代循环中使用pandas索引,程序会在中断的地方继续执行吗?示例:

i = 0
while i < len(df):
    try:
        df['A'] = df[i:i + 10].apply(lambda x: api_call(x['B'])[0] + 10)
    except IndexError:
        time.sleep(5)
i += 10

如果在df [12]上引发了异常,则在程序暂停5秒钟后,如何使程序在导致异常的索引处接听(信号表示程序超出了允许的调用次数) )?

1 个答案:

答案 0 :(得分:2)

我认为您只需要在else代码上放置一个try...except块即可。

i = 0
while i < len(df):
    try:
        df['A'] = df[i:i + 10].apply(lambda x: api_call(x['B'])[0] + 10)
    except IndexError:
        time.sleep(5)
    else:
        i += 10

这使得i += 10仅在try块未引发异常的情况下运行。否则,循环将以相同的i值重复。