Python实现采用进度条实时显示处理进度的方法


Posted in Python onDecember 19, 2017

本文实例讲述了Python实现采用进度条实时显示处理进度的方法。分享给大家供大家参考,具体如下:

前言

在大多数时候,我们的程序会一直进行循环处理。这时候,我们非常希望能够知道程序的处理进度,由此来决定接下来该做些什么。接下来告诉大家如何简单又漂亮的实现这一功能。

如何使用这个类

使用这个类很简单,只需要三步即可完成,如下:

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.处理结束后显示消息

进度条的实现

由于很简单,直接上代码

#!/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

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
将Django框架和遗留的Web应用集成的方法
Jul 24 Python
全面分析Python的优点和缺点
Feb 07 Python
python实现百度语音识别api
Apr 10 Python
python多线程之事件Event的使用详解
Apr 27 Python
python利用smtplib实现QQ邮箱发送邮件
May 20 Python
python: 自动安装缺失库文件的方法
Oct 22 Python
使用python itchat包爬取微信好友头像形成矩形头像集的方法
Feb 21 Python
python进程间通信Queue工作过程详解
Nov 01 Python
TFRecord文件查看包含的所有Features代码
Feb 17 Python
Python2.7:使用Pyhook模块监听鼠标键盘事件-获取坐标实例
Mar 14 Python
python 视频下载神器(you-get)的具体使用
Jan 06 Python
Python+uiautomator2实现自动刷抖音视频功能
Apr 29 Python
Python实现矩阵加法和乘法的方法分析
Dec 19 #Python
分析python切片原理和方法
Dec 19 #Python
python实现redis三种cas事务操作
Dec 19 #Python
Python2/3中urllib库的一些常见用法
Dec 19 #Python
Python与人工神经网络:使用神经网络识别手写图像介绍
Dec 19 #Python
Python random模块用法解析及简单示例
Dec 18 #Python
Python方法的延迟加载的示例代码
Dec 18 #Python
You might like
php foreach 使用&(与运算符)引用赋值要注意的问题
2010/02/16 PHP
PHP表单递交控件名称含有点号(.)会被转化为下划线(_)的处理方法
2013/01/06 PHP
一段实用的php验证码函数
2016/05/19 PHP
PHP解耦的三重境界(浅谈服务容器)
2017/03/13 PHP
javascript 特性检测并非浏览器检测
2010/01/15 Javascript
javascript 获取iframe里页面中元素值的方法
2014/02/17 Javascript
自己编写的支持Ajax验证的JS表单验证插件
2015/05/15 Javascript
jQuery实现类似标签风格的导航菜单效果代码
2015/08/25 Javascript
巧用canvas
2017/01/21 Javascript
Vue0.1的过滤代码如何添加到Vue2.0直接使用
2017/08/23 Javascript
JavaScript数组去重算法实例小结
2018/05/07 Javascript
微信小程序自定义键盘 内部虚拟支付
2018/12/20 Javascript
js中实例与对象的区别讲解
2019/01/21 Javascript
详解小程序设置缓存并且不覆盖原有数据
2019/04/15 Javascript
Vue2.x通用条件搜索组件的封装及应用详解
2019/05/28 Javascript
vue.js实现备忘录demo
2019/06/26 Javascript
js+HTML5 canvas 实现简单的加载条(进度条)功能示例
2019/07/16 Javascript
Vue组件模板及组件互相引用代码实例
2020/03/11 Javascript
[41:54]2018DOTA2亚洲邀请赛 4.1 小组赛A组加赛 TNC vs Liquid
2018/04/03 DOTA
详解在Python程序中使用Cookie的教程
2015/04/30 Python
Python编程实现二叉树及七种遍历方法详解
2017/06/02 Python
Python 网络爬虫--关于简单的模拟登录实例讲解
2018/06/01 Python
浅谈Python接口对json串的处理方法
2018/12/19 Python
python读取大文件越来越慢的原因与解决
2019/08/08 Python
Python 图像对比度增强的几种方法(小结)
2019/09/25 Python
Python SELENIUM上传文件或图片实现过程
2019/10/28 Python
Python GUI库PyQt5图形和特效样式QSS介绍
2020/02/25 Python
HTML5 Canvas实现图片缩放、翻转、颜色渐变的代码示例
2016/02/28 HTML / CSS
Myprotein蛋白粉美国官网:欧洲畅销运动营养品牌
2016/11/15 全球购物
印尼网上商店:Alfacart.com
2019/03/11 全球购物
便利店投资创业计划书
2014/02/08 职场文书
2014年高考决心书
2014/03/11 职场文书
导师就业推荐信范文
2014/05/22 职场文书
开场白怎么写
2015/06/01 职场文书
中国古代史学名著《战国策》概述
2019/08/09 职场文书
导游词之大雁塔景区
2019/09/17 职场文书