coo*_*l77 16 python progress-bar tqdm
我正在尝试运行一个脚本,试图通过puppet管理在centos7系统上安装模块.我想为运行脚本时发生的安装实现进度条.我正在使用tqdm模块来执行此操作.这是我如何实现模块的一个快照:
from tqdm import tqdm
for i in tqdm(commands):
res = run_apply(i)
Run Code Online (Sandbox Code Playgroud)
这里run_apply()是实际处理运行和应用puppet配置的函数.
到目前为止一切顺利,我得到了一个进度条,但是当执行消息写入控制台时,它一直向下移动到控制台.但是,我需要进度条在控制台的底部保持不变并动态更新,而不会使运行消息干扰条形码.我希望控制台上与执行相关的消息可以随心所欲地进行,但进度条应该从执行开始到结束时保持在底部.
以下是我所看到的:
File line: 0.00
Package: 0.05
Service: 0.19
File: 0.23
Exec: 0.23
Last run: 1470308227
Config retrieval: 3.90
Total: 4.60
Version:
Config: 1470308220
Puppet: 3.7.3
now here x
result: 2
38%|?????????????????????????????????????? | 5/13 [00:29<00:51, 6.44s/it]about to: profiles::install::download_packages
about to run puppet apply --summarize --detailed-exitcodes --certname puppet -e "include profiles::install::download_packages"
Error: Could not find class profiles::install::download_packages for puppet on node puppet
Error: Could not find class profiles::install::download_packages for puppet on node puppet
now here x
result: 1
46%|?????????????????????????????????????????????? | 6/13 [00:32<00:36, 5.27s/it]about to: profiles::install::install
about to run puppet apply --summarize --detailed-exitcodes --certname puppet -e "include profiles::install::install"
Error: Could not find class profiles::install::install for puppet on node puppet
Error: Could not find class profiles::install::install for puppet on node puppet
now here x
result: 1
54%|????????????????????????????????????????????????????? | 7/13 [00:34<00:26, 4.45s/it]about to: stx_network
about to run puppet apply --summarize --detailed-exitcodes --certname puppet -e "include stx_network"
Notice: Compiled catalog for puppet in environment production in 0.84 seconds
Notice: /Stage[main]/Stx_network/Tidy[purge unused nics]: Tidying File[/etc/sysconfig/network-scripts/ifcfg-lo]
...
Run Code Online (Sandbox Code Playgroud)
请让我知道如何实现我想要的.
gab*_*ous 21
对于要在进度条上方打印的消息,您需要向tqdm发信号通知您正在打印消息(否则tqdm,也没有任何其他进度条,无法知道您在进度条旁边输出消息).
为此,您可以使用tqdm.write(msg)而不是打印您的消息print(msg).如果您不想修改run_apply()使用tqdm.write(msg)而不是print(msg),则可以通过tqdm从顶级脚本重定向所有标准输出,如此处所述.
| 归档时间: |
|
| 查看次数: |
16043 次 |
| 最近记录: |