TQDM 多行彩色进度条打印

tso*_*kis 4 python tqdm

我不确定为什么当我使用该bar_format选项添加颜色时,我的 TQDM 进度条会分成多行。这似乎也与迭代次数有关,因为当我仅运行 10 次迭代(而不是 1389 次迭代)的相同代码时,它不会分裂(参见图片)。另外,当我运行相同的代码而不修改条形颜色时,它工作得很好。

问题

更少的迭代

无颜色

from tqdm import tqdm
from colorama import Fore

dnames = [...]  # List of directories
cmap = [  # List of colors, same length as `dnames`
    '\x1b[38;5;231m',
    '\x1b[38;5;194m',
    '\x1b[38;5;151m',
    '\x1b[38;5;114m',
    '\x1b[38;5;71m',
    '\x1b[38;5;29m',
    '\x1b[38;5;22m',
    '\x1b[38;5;22m',
    '\x1b[38;5;22m',
    '\x1b[38;5;22m'
    # ...may include many more colors
]

# Initialize progress bar and color variable
pbar = tqdm(dnames, unit='dir')
current_color = None

for i, dname in enumerate(dnames):

    # Update color of pbar if different from last iteration
    if current_color != cmap[i]:
        pbar.bar_format = "{l_bar}%s{bar}%s{r_bar}" % (cmap[i], Fore.RESET)
        current_color = cmap[i]

    # For loop body goes here

    # Update pbar
    pbar.update(1)

pbar.close()
Run Code Online (Sandbox Code Playgroud)

Fre*_*lan 9

您的代码对我来说工作得很好,关于您的版本的其他答案tqdm可能会有所帮助。TL;DR 您需要更新


对于任何想知道的人,以下是如何设置条形颜色的方法:

from tqdm import tqdm
from time import sleep

for i in tqdm(range(100), colour="red"):
    sleep(0.001)
Run Code Online (Sandbox Code Playgroud)

有效的颜色选择:[hex (#00ff00), BLACK, RED, GREEN, YELLOW, BLUE, MAGENTA, CYAN, WHITE]

文档:

https://tqdm.github.io/docs/tqdm/#format_meter