前言
在大多数时候,我们的程序会一直进行循环处理。这时候,我们非常希望能够知道程序的处理进度,由此来决定接下来该做些什么。接下来告诉大家如何简单又漂亮的实现这一功能。
如何使用这个类
使用这个类很简单,只需要三步即可完成,如下:
1
2
3
4
5
|
process_bar = ShowProcess(max_steps) # 1.在循环前定义类的实体, max_steps是总的步数
for i in range (max_steps + 1 ):
process_bar.show_process() # 2.显示当前进度
time.sleep( 0.05 )
process_bar.close( 'done' ) # 3.处理结束后显示消息
|
进度条的实现
由于很简单,直接上代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
|
#!/usr/local/lib
# -*- coding: UTF-8 -*-
import sys, time
class ShowProcess():
"""
显示处理进度的类
调用该类相关函数即可实现处理进度的显示
"""
i = 0 # 当前的处理进度
max_steps = 0 # 总共需要处理的次数
max_arrow = 50 #进度条的长度
# 初始化函数,需要知道总共的处理次数
def __init__( self , max_steps):
self .max_steps = max_steps
self .i = 0
# 显示函数,根据当前的处理进度i显示进度
# 效果为[>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>]100.00%
def show_process( self , i = None ):
if i is not None :
self .i = i
else :
self .i + = 1
num_arrow = int ( self .i * self .max_arrow / self .max_steps) #计算显示多少个'>'
num_line = self .max_arrow - num_arrow #计算显示多少个'-'
percent = self .i * 100.0 / self .max_steps #计算完成进度,格式为xx.xx%
process_bar = '[' + '>' * num_arrow + '-' * num_line + ']' \
+ '%.2f' % percent + '%' + '\r' #带输出的字符串,'\r'表示不换行回到最左边
sys.stdout.write(process_bar) #这两句打印字符到终端
sys.stdout.flush()
def close( self , words = 'done' ):
print ''
print words
self .i = 0
if __name__ = = '__main__' :
max_steps = 100
process_bar = ShowProcess(max_steps)
for i in range (max_steps + 1 ):
process_bar.show_process()
time.sleep( 0.05 )
process_bar.close()
|
运行
按照主函数的方法调用此类即可,显示效果如下:
[>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>]100.00%
done
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。
原文链接:http://blog.csdn.net/u013832707/article/details/73608504