簡體   English   中英

使用 tqdm 在進度條前打印消息

[英]Print message before progress bar using 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()

帶循環的簡單示例:

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)

如前所述,您只能刪除終端中的當前行(使用\\r ),關於 SO 限制的主題有很多。

另一種方法是使用curses,但這是一種完全不同的方法。

這是一個可能的解決方法,對我有用:

print("Your message", flush=True)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM