我可以在tqdm进度条中添加消息吗?

时间:2016-05-29 05:47:44

标签: python tqdm

使用tqdm进度条时:我可以在循环中将进度条添加到同一行吗?

我尝试使用" tqdm.write"选项,但它会在每次写入时添加一个新行。我希望每次迭代都在条形图旁边显示一条短消息,它将在下一次迭代中消失。这可能吗?

5 个答案:

答案 0 :(得分:36)

Usage of tqdm中显示的示例对我有用。

pbar = tqdm(["a", "b", "c", "d"])
for char in pbar:
    pbar.set_description("Processing %s" % char)

答案 1 :(得分:30)

您可以更改说明以在进度条前显示小信息,如下所示:

from tqdm import trange
from time import sleep
t = trange(100, desc='Bar desc', leave=True)
for i in t:
    t.set_description("Bar desc (file %i)" % i)
    t.refresh() # to show immediately the update
    sleep(0.01)

答案 2 :(得分:13)

您可以在tqdm函数中添加一个calc( marginWidth/viewportWidth * 100%)参数。

desc

答案 3 :(得分:11)

您可以使用set_postfix将值直接添加到栏中。

示例:

from tqdm import tqdm
pbar = tqdm(["a", "b", "c", "d"])
num_vowels = 0
for ichar in pbar:
    if ichar in ['a','e','i','o','u']:
        num_vowels += 1
    pbar.set_postfix({'num_vowels': num_vowels})

postfix词典已集成到进度栏中:

100%|███████████| 4/4 [00:11<00:00,  2.93s/it, num_vowels=1]

您可以使用set_postfix_str代替字典,只需在进度条的末尾添加一个字符串即可。

答案 4 :(得分:1)

我个人觉得使用 with 语句要简洁得多:

from tqdm import tqdm

with tqdm(['a','b','c']) as t:
  for c in t:
    t.set_description(f'{c}')