相信很多人在写一些简单的python脚本的时候都希望能够在程序运行的过程中实现进度条的功能以便查看程序运行的速度或者进度。
网上down的代码,主要是使用flush刷新缓冲区留下来备用,哇咔咔
01.#!/usr/bin/python302.#coding:utf-803.import sys04.import time05. 06.class ShowProcess():07. """08. 显示处理进度的类09. 调用该类相关函数即可实现处理进度的显示10. """11. i = 0 # 当前的处理进度12. max_steps = 0 # 总共需要处理的次数13. max_arrow = 50 #进度条的长度14. infoDone = 'done'15. 16. # 初始化函数,需要知道总共的处理次数17. def __init__(self, max_steps, infoDone = 'Done'):18. self.max_steps = max_steps19. self.i = 020. self.infoDone = infoDone21. 22. # 显示函数,根据当前的处理进度i显示进度23. # 效果为[>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>]100.00%24. def show_process(self, i=None):25. if i is not None:26. self.i = i27. else:28. self.i += 129. num_arrow = int(self.i * self.max_arrow / self.max_steps) #计算显示多少个'>'30. num_line = self.max_arrow - num_arrow #计算显示多少个'-'31. percent = self.i * 100.0 / self.max_steps #计算完成进度,格式为xx.xx%32. process_bar = '[' + '>' * num_arrow + '-' * num_line + ']'\33. + '%.2f' % percent + '%' + '\r' #带输出的字符串,'\r'表示不换行回到最左边34. sys.stdout.write(process_bar) #这两句打印字符到终端35. sys.stdout.flush()36. if self.i >= self.max_steps:37. self.close()38. 39. def close(self):40. print('')41. print(self.infoDone)42. self.i = 043. 44.if __name__=='__main__':45. max_steps = 10046. 47. process_bar = ShowProcess(max_steps, 'OK')48. for i in range(max_steps):49. process_bar.show_process()50. time.sleep(0.01)
内容版权声明:除非注明,否则皆为本站原创文章。
转载注明出处:https://sulao.cn/post/664
评论列表