san*_*hit 6 python logging tqdm
在我的 python 项目中,我使用tqdm模块来显示进度条。\n我想在进度条之前的行上打印一条持久消息。
该set_description方法在同一行上打印消息,同时tqdm.write创建一个新行。
使用set_description
$ python pbar.py\n{Task_1 message} 3%|\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88 ]
有可能实现这一点
\n\n$ python pbar.py\n{Task_1 message} \n3%|\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88\xe2\x96\x88 ]
编辑:
\n\nfrom tqdm import tqdm\n\npbar = tqdm(m_list)\nfor item in m_list:\n # Do work\n pbar.update(1)\npbar.close()\nRun Code Online (Sandbox Code Playgroud)\n
带循环的简单示例:
import tqdm,time
for i in tqdm.tqdm(range(9),desc="{Task_1 message}"):
time.sleep(0.1)
Run Code Online (Sandbox Code Playgroud)
最终输出:
{Task_1 message}: 100%|##############################################| 9/9 [00:00<00:00, 9.99it/s]
Run Code Online (Sandbox Code Playgroud)
如果您添加\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]
Run Code Online (Sandbox Code Playgroud)
您唯一能做的就是先打印描述,然后运行没有描述的任务,因为您只能删除终端中的当前行。
import tqdm,time
print("{Task_1 message}")
for i in tqdm.tqdm(range(9)):
time.sleep(0.1)
Run Code Online (Sandbox Code Playgroud)
如前所述,您只能删除终端中的当前行(使用\r),关于 SO 的限制有很多主题。
另一种方法是使用诅咒,但这是一种完全不同的方法。