Python在Console下显示文本进度条的方法
进度条实现原理 进度条和一般的print区别在哪里呢? 在用Python处理耗时的任务时,往往希望能够了解到任务当前的处理进度,这个时候需要在任务中不断打印出任务的进度信息。一般我们是这样的: def process_mission(): 这种方式会在窗口输出一堆类似下面这样的信息: 当前处理到第1项 这种信息有可能非常非常的长,也有可能输出的时候非常非常的快,以至于根本就无法看清楚(输出非常快的时候)。 这时候,我们期待这样的功能: [================== ] 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) 到此,我们完成了一个会在控制台动态更新的进度条。 以上所述是小编给大家介绍的Python在Console下显示文本进度条的方法,希望对大家有所帮助。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |