防止 tqdm 在出错后打印任何内容
Preventing tqdm from printing anything after error
在 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。
您可以将 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
请注意,如果您退出上下文管理器,它将 运行 其 'finally' 部分并关闭 tqdm 实例。
在 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。
您可以将 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
请注意,如果您退出上下文管理器,它将 运行 其 'finally' 部分并关闭 tqdm 实例。