python输出命令_Python 输出命令行进度条

在使用 pip 安装时,你会发现有下载进度条,我们也可以借助开源的第三方库来实现这个功能,在项目输出时增加一些可视化效果。

一个简单易用的第三方库是:verigak/progress​github.comv2-442ee6eb1335524687fd4ef99f065f1a_ipico.jpg

作者提供了动图很直观地展现了实现的所有输出。

这个库实现了两类样式,一类是有终点的进度条样式,另一类是多用于加载的转圈样式。

import time

from progress.bar import Bar

bar = Bar('Processing', max=100, fill='@', suffix='%(percent)d%%')

for i in range(100):

time.sleep(0.1)

bar.next()

bar.finish()

参数定义的功能:max: 进度条最大进度

fill:进度条填充的字符

suffix:百分比的样式

运行上述代码会得到输出

Processing |@@@@@@ | 20%

同时也提供上下文的用法(需要用 Github 里的源代码):

with Bar('Processing', max=20) as bar:

for i in range(20):

# Do some work

bar.next()

另一类转圈样式,用法和Bar类似,只要没达到终点就一直调用next方法即可

from progress.spinner import Spinner

spinner = Spinner('Loading ')

while state != 'FINISHED':

# Do some work

spinner.next()

动图里的所有样式都是作者已经实现的派生类,用法基本都一样,当然也可以继承基础类来自己实现更多的功能。

class SlowBar(Bar):

suffix = '%(remaining_hours)dhours remaining'

@property

def remaining_hours(self):

return self.eta // 3600

上面介绍的库,实现的功能很简单,而且默认只能输出到终端。

如果有更复杂的使用场景,推荐使用另一个库:WoLpH/python-progressbar​github.comv2-28d97a24fa7348b511a674b784fb07a5_ipico.jpg

这个库实现了更多功能,可以自定义组合出一个进度条样式,还可以指定输出流。

基本的使用很简单,可以直接传入迭代对象。

import time

import progressbar

for i in progressbar.progressbar(range(100)):

time.sleep(0.02)

输出如下:

70% (70 of 100) |################ | Elapsed Time: 0:00:01 ETA: 0:00:00

也可以生成对象后调用update方法 。

import time

import progressbar

bar = progressbar.ProgressBar(max_value=100)

for i in range(100):

time.sleep(0.1)

bar.update(i)

最有特点之处就是可以自定义组件,比如我们来实现类似于动图中转圈加载的样式。

import time

import progressbar

widgets = [

'Loading: ',

'[', progressbar.AnimatedMarker(), ']',

' ',

progressbar.Timer()

]

bar = progressbar.ProgressBar(

widgets=widgets, max_value=progressbar.UnknownLength)

for i in range(100):

time.sleep(0.5)

bar.update(i)

输出样式是这样的,方括号中的会一直旋转

Loading: [\] Elapsed Time: 0:00:13

更多功能不再赘述,可以查看 Github 中的文档

更多学习资料

欢迎关注微信公众号:面向人生编程,本号长期分享经验向文章

回复【资料】获取本人精选的学习视频及代码微信公众号:面向人生编程

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值