Python - 更好的循环解决方案 - 收到错误后重新运行并在 3 次尝试后忽略该错误



>我在下面创建了 for 循环来运行一个函数,从熊猫那里获取股票代码列表的价格数据。基本上,如果获得 RemoteDataError 并且循环将在尝试 3 次后忽略该错误,则循环将重新运行该函数。

尽管下面的 for 循环可以很好地达到这个目的,但我确实认为有一个更好的解决方案,因为我无法定义从下面的循环尝试的时间,比如在 for 循环之外为尝试的时间放置一个 while 循环。我尝试定义一个名为 Try = 0 的变量,每次重新运行时,都会添加一个尝试。逻辑是尝试 += 1。如果尝试次数达到 3 次,请使用继续忽略错误。但是,它没有奏效。可能我设置错了什么。

 for ticker in tickers:
        print(ticker)
        try:
            get_price_for_ticker()
        except RemoteDataError:
            print('No information for {}'.format(ticker))
            try:
                get_price_for_ticker()
                print('Got data')
            except RemoteDataError:
                print('1st with no data')
                try:
                    get_price_for_ticker()
                    print('Got data')
                except RemoteDataError:
                    print('2nd with no data')
                    try:
                        get_price_for_ticker()
                        print('Got data')
                    except RemoteDataError:
                        print('3rd with no data (should have no data in the database)')
                        continue

有没有更好的方法来实现此目的?

有没有更好的方法来实现此目的?

是的,有。使用while循环和计数器。

count = 0
while count < 3:
    try:
        get_price_for_ticker()
        break                    # reach on success
    except RemoteDataError:
        print('Retrying {}'.format(count + 1)) 
        count += 1               # increment number of failed attempts
if count == 3:
    ...                          # if count equals 3, the read was not successful 

此代码应进入外部for循环。或者,您可以使用接受 ticker 参数的 while + 错误处理代码定义一个函数,并且可以在 for 循环的每次迭代中调用函数。这是一个风格问题,由你决定。

相关内容

最新更新