>我在下面创建了 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
循环的每次迭代中调用该函数。这是一个风格问题,由你决定。