使用tqdm在进度条之前打印消息

时间:2016-10-29 07:36:10

标签: python logging tqdm

在我的python项目中,我使用tqdm模块显示进度条。 我想在进度条之前的行上打印持久性消息。

set_description方法在同一行打印消息,而tqdm.write创建一个新行。

使用set_description

$ python pbar.py {Task_1 message} 3%|████ ]

是否有可能实现这一目标

$ python pbar.py {Task_1 message} 3%|████ ]

编辑:

from tqdm import tqdm

pbar = tqdm(m_list)
for item in m_list:
   # Do work
   pbar.update(1)
pbar.close()

2 个答案:

答案 0 :(得分:1)

循环的简单示例:

ontouchdown

最终输出:

import tqdm,time

for i in tqdm.tqdm(range(9),desc="{Task_1 message}"):
    time.sleep(0.1)

如果您在说明中添加{Task_1 message}: 100%|##############################################| 9/9 [00:00<00:00, 9.99it/s] ,则会将输出丢弃,如下所示:

\n

你唯一能做的就是首先打印描述,然后运行没有描述的任务,因为你只能删除终端中的当前行。

{Task_1 message}
{Task_1 message}                                            | 0/9 [00:00<?, ?it/s]
{Task_1 message}                                    | 1/9 [00:00<00:00,  9.99it/s]
{Task_1 message}#                                   | 2/9 [00:00<00:00,  9.99it/s]
{Task_1 message}######                              | 3/9 [00:00<00:00,  9.99it/s]
{Task_1 message}###########                         | 4/9 [00:00<00:00,  9.99it/s]
{Task_1 message}################                    | 5/9 [00:00<00:00,  9.99it/s]
{Task_1 message}#####################               | 6/9 [00:00<00:00,  9.96it/s]
{Task_1 message}##########################          | 7/9 [00:00<00:00,  9.97it/s]
{Task_1 message}###############################     | 8/9 [00:00<00:00,  9.98it/s]
: 100%|#############################################| 9/9 [00:00<00:00,  9.98it/s]

如前所述,您只能删除终端中的当前行(使用import tqdm,time print("{Task_1 message}") for i in tqdm.tqdm(range(9)): time.sleep(0.1) ),关于SO的限制有很多主题。

替代方案是使用curses,但这是一种完全不同的方法。

答案 1 :(得分:0)

这是一个可行的解决方法,对我有用:

return password_hash('password', PASSWORD_ARGON2I);