问题描述
在处理tqdm循环中的错误时,我希望错误消息成为最后显示的内容。 MWE:
import tqdm
import sys
for i in tqdm.tqdm(range(10)):
if i == 3:
print('error')
sys.exit(1)
运行此命令时,tqdm仍在“错误”消息后打印进度条。是否有可能避免这种情况(因此,“错误”是最后显示的内容)?
编辑:我实际上是从不了解tqdm的不同外部模块调用sys.exit
,并且我不想让tqdm对象具有全局变量。也许我要的太多了...
干杯。
解决方法
是的。
致电close()
并确保leave
为False。
请参阅:https://tqdm.github.io/docs/tqdm/#close
,您可以将tqdm
实例存储在变量中,然后手动对其进行更新。
progress_bar = tqdm(total=10)
for i in range(10):
progress_bar.update()
do_stuff()
if i ==3:
progress_bar.close()
print('error')
sys.exit(1)
您可以将tqdm.trange
用作上下文管理器,以免除手动更新的需要,但是仍然可以提供一种关闭它的方法。参见https://github.com/tqdm/tqdm#description-and-additional-stats
请注意,如果您脱离上下文管理器,它将运行其“最终”部分并关闭tqdm实例。