使用 tqdm 进度条时:我可以在循环中将消息添加到与进度条相同的行吗?
我尝试使用“tqdm.write”选项,但它会在每次写入时添加一个新行。我希望每次迭代都在栏旁边显示一条短消息,该消息将在下一次迭代中消失。这可能吗?
您可以更改描述以在进度条之前显示一条小消息,如下所示:
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)
/EDIT:在最新版本中tqdm
,您可以使用t.set_description("text", refresh=True)
(这是默认设置)和删除t.refresh()
(感谢Daniel的提示)。
其他答案侧重于动态描述,但对于静态描述,您可以desc
在 tqdm 函数中添加一个参数。
from tqdm import tqdm
x = [5]*1000
for _ in tqdm(x, desc="Example"):
pass
Example: 100%|██████████████████████████████████| 1000/1000 [00:00<00:00, 1838800.53it/s]
您可以使用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})
后缀字典集成到进度条中:
100%|███████████| 4/4 [00:11<00:00, 2.93s/it, num_vowels=1]
set_postfix_str
您可以使用将字符串添加到进度条的末尾来代替字典。
我个人觉得使用以下with
语句要干净得多:
from tqdm import tqdm
with tqdm(['a','b','c']) as t:
for c in t:
t.set_description(f'{c}')
I personally use .set_description() and a progression_bar assignment statement before the for loop:
from tqdm import tqdm
progression_bar = tqdm(["An", "iterable", "object"])
for element in (progression_bar):
progression_bar.set_description("Processing « %s »" % str(element))