前言
在大多数时候,我们的程序会一直进行循环处理。这时候,我们非常希望能够知道程序的处理进度,由此来决定接下来该做些什么。接下来告诉大家如何简单又漂亮的实现这一功能。
如何使用这个类
使用这个类很简单,只需要三步即可完成,如下:
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