首 页最新软件下载排行文章资讯投稿发布下载专题
维维下载站
您的位置:首页编程开发网络编程编程其它 → Python在Console下如何显示文本进度条例子办法

Python在Console下如何显示文本进度条例子办法

来源:本站整理 发布时间:2016-2-14 11:44:12 人气:

Python与php有一些类似的编辑语言,下面为大家带来Python在Console下显示文本进度条的方法,是Python在Console下显示文本进度条的方法相关知识,有兴趣的收藏了吧。

进度条和一般的print有什么样的区别?

print会输出一个\n,也就是换行符,这样光标移动到了下一行行首,接着输出,之前已经通过stdout输出的东西依旧保留,而且保证我们在下面看到最新的输出结果。

进度条不然,我们必须再原地输出才能保证他是一个进度条,否则换行了怎么还叫进度条?实现进度条最简单的方法是,在输出完毕以后,将光标移动到行首,继续在那里输出更长的进度条就能够实现,新的更长的进度条把旧的短覆盖,就形成了动画效果。

在用Python处理耗时的任务时,往往希望能够了解到任务当前的处理进度,这个时候需要在任务中不断打印出任务的进度信息。一般我们是这样的:

def process_mission():
""" 任务处理方法 """
# 这里是任务处理过程
print('当前处理到第[%d]项' % count)
# 这里是任务处理过程

这种方式会在窗口输出一堆类似下面这样的信息:

当前处理到第1项
当前处理到第2项
当前处理到第3项
当前处理到第4项
当前处理到第5项
....

这种信息有可能会相当的长,也可能输出的时候会相当的快,以至于在输出相当快的时候根本就不能看清楚。

这时我们期待这样的功能:

[================== ] 25.60%

不过要是纯粹的使用 print 是不能达到效果的,会变成与前面的相同,满屏都是这种杠杠。

那怎么样正确显示进度条呢,

Python提供了一个模块,叫: progressbar ,当使用这个模块以后,你要显示进度的仅需如下:

import progressbar
# 先定义一个进度条
# http://blog.useasp.net/
pbar = progressbar.ProgressBar(maxval=100, \
widgets=[progressbar.Bar('=', '[', ']'), ' ', \
progressbar.Percentage()])
for i in xrange(100):
# 更新进度条
pbar.update(i+1)
pbar.finish()

# Ok,至此结束。

是不是非常容易就完成进度条的显示?但是很遗憾的是,这个python模块并不是默认的,而是需要安装:

pip install progressbar

要是没有安装 pip 可以 参考这里。

对于只要一个简单进度条的人来讲,安装一个python包好动静像有点太大,那么,自己动手写一个即可。

下面是Mitchell自己写的一个类似的进度条,不需要安装包,简单易用。

# 在使用本方法之前,请先做如下import
# from __future__ import division
# import math
# import sys
# ##blog.useasp.net##
def progressbar(cur, total):
percent = '{:.2%}'.format(cur / total)
sys.stdout.write('\r')
sys.stdout.write("[%-50s] %s" % (
'=' * int(math.floor(cur * 50 / total)),
percent))
sys.stdout.flush()

说明:

cur , total :一个是当前值,一个是总值。 cur 在任务的处理过程中会不断向 total 靠近,直到两者相等,任务结束

需要说明的是,这两个可能为整型,所以要引入 division 。

在使用时,只需调用 progressbar 就能够在控制台输出进度条。

# 调用方式举例
progressbar(2, 100)
progressbar(3.9, 10)
progressbar(3283, 27379)

至此,就算是完成了一个会在控制台动态更新的进度条了。

相关下载
栏目导航
本类热门阅览