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实现采用进度条实时显示处理进度的方法
  • 简单实现python进度条脚本
  • Python实现带百分比的进度条
  • Python在Console下显示文本进度条的方法
  • Python实现控制台进度条功能
  • python控制台中实现进度条功能
  • python在控制台输出进度条的方法
  • Python调用命令行进度条的方法
  • Python显示进度条的方法
时间: 2018-01-29

Python实现控制台中的进度条功能代码

进度条最主要的问题就是所有字符全部在同一行,而且可以修改. 然而当执行print语句的时候,python会在打印完这个语句的同时在结尾加上'\n',也就是换行,这就导致在控制台下一旦被print之后就无法再修改了.所以我们现在的输出就不能再使用print来完成了. 我们要使用的是来自sys库的sys.stdout.write()函数,这个函数会在控制台输出这个字符串的同时不加上任何结尾,这就意味着这个输出还没有完全结束.通过sys.stdout.flush()函数可以把输出暂时打印在控制台中(造

Python显示进度条的方法

本文实例讲述了Python显示进度条的方法,是Python程序设计中非常实用的技巧.分享给大家供大家参考.具体方法如下: 首先,进度条和一般的print区别在哪里呢? 答案就是print会输出一个\n,也就是换行符,这样光标移动到了下一行行首,接着输出,之前已经通过stdout输出的东西依旧保留,而且保证我们在下面看到最新的输出结果. 进度条不然,我们必须再原地输出才能保证他是一个进度条,否则换行了怎么还叫进度条? 最简单的办法就是,再输出完毕后,把光标移动到行首,继续在那里输出更长的进度条即可

Python在Console下显示文本进度条的方法

进度条实现原理 进度条和一般的print区别在哪里呢? 答案就是print会输出一个\n,也就是换行符,这样光标移动到了下一行行首,接着输出,之前已经通过stdout输出的东西依旧保留,而且保证我们在下面看到最新的输出结果. 进度条不然,我们必须再原地输出才能保证他是一个进度条,否则换行了怎么还叫进度条? 实现进度条最简单的办法就是,在输出完毕后,把光标移动到行首,继续在那里输出更长的进度条即可实现,新的更长的进度条把旧的短覆盖,就形成了动画效果. 在用Python处理耗时的任务时,往往希望能够

Python实现控制台进度条功能

本文实例讲述了Python显示进度条的方法,是Python程序设计中非常实用的技巧.分享给大家供大家参考.具体方法如下: 首先,进度条和一般的print区别在哪里呢? 答案就是print会输出一个\n,也就是换行符,这样光标移动到了下一行行首,接着输出,之前已经通过stdout输出的东西依旧保留,而且保证我们在下面看到最新的输出结果. 进度条不然,我们必须再原地输出才能保证他是一个进度条,否则换行了怎么还叫进度条? 最简单的办法就是,再输出完毕后,把光标移动到行首,继续在那里输出更长的进度条即可

python在控制台输出进度条的方法

本文实例讲述了python在控制台输出进度条的方法.分享给大家供大家参考.具体实现方法如下: 进度条效果如下所示: |#############################---------------------| 59 percent done 代码如下: class ProgressBar(): def __init__(self, width=50): self.pointer = 0 self.width = width def __call__(self,x): # x in p

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

本文实例讲述了Python实现采用进度条实时显示处理进度的方法.分享给大家供大家参考,具体如下: 前言 在大多数时候,我们的程序会一直进行循环处理.这时候,我们非常希望能够知道程序的处理进度,由此来决定接下来该做些什么.接下来告诉大家如何简单又漂亮的实现这一功能. 如何使用这个类 使用这个类很简单,只需要三步即可完成,如下: process_bar = ShowProcess(max_steps) # 1.在循环前定义类的实体, max_steps是总的步数 for i in range(max

Python调用命令行进度条的方法

本文实例讲述了Python调用命令行进度条的方法.分享给大家供大家参考.具体分析如下: 关键点是输出'\r'这个字符可以使光标回到一行的开头,这时输出其它内容就会将原内容覆盖. import time import sys def progress_test(): bar_length=20 for percent in xrange(0, 100): hashes = '#' * int(percent/100.0 * bar_length) spaces = ' ' * (bar_lengt

Python实现带百分比的进度条

大家在安装程序或下载文件时,通常都能看到进度条,提示你当前任务的进度.其实,在python中实现这个功能很简单,下面是具体代码.在实际应用中,你完全可以根据自己的要求进行修改!比如,示例中是通过time.sleep()方法进行时间延迟,你完全可以根据实际的程序运行耗时进行控制:同样,在进度百分比处,你也可以显示实际的进度比,而不是例子中机械的自增百分比. import sys import time def view_bar(num, total): rate = num / total rat

python控制台中实现进度条功能

我们大多数人都希望写一些简单的python脚本的同时都想能够在程序运行的过程中实现进度条的功能以便查看程序运行的速度或者进度.今天就和大家探讨这个问题:如何在python控制台中实现进度条功 进度条最主要的问题就是所有字符全部在同一行,而且可以修改. 然而当执行print语句的时候,python会在打印完这个语句的同时在结尾加上'\n',也就是换行,这就导致在控制台下一旦被print之后就无法再修改了.所以我们现在的输出就不能再使用print来完成了. 我们要使用的是来自sys库的sys.std

简单实现python进度条脚本

最近需要用Python写一个小脚本,用到了一些小知识,赶紧抽空记录一下.不深但是常用. 两个进度条示例,拷贝就能运行: # coding=utf-8 import sys import time # width:宽度, percent:百分比 def progress(width, percent): print "\r%s %d%%" % (('%%-%ds' % width) % (width * percent / 100 * '='), percent), if percent

分享一个简单的python读写文件脚本

先来看一段创建文件并写入文本的代码,然后作介绍. #!/usr/bin/env python 'makeFile.py -- create a file' import os ls = os.linesep # get filename while True: fname = raw_input('Input an unused file name >') if os.path.exists(fname): print "ERROR: '%s' already exists" %

Python进度条的制作代码实例

这篇文章主要介绍了Python进度条的制作代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 import sys,time #导入模块 for i in range(50): #进度条的长度 sys.stdout.write("#") #进度条的内容,这里要注意了,pycharm有可能不显示write的方法 sys.stdout.flush() #刷新缓存 time.sleep(0.5) #间隔时间,和shell的sleep差不

python进度条显示之tqmd模块

安装 anaconda 是自动集成的 如果导入不存在,直接pip pip install tqmd 参数 #参数介绍 iterable=None, desc=None, 传入str类型,作为进度条标题(类似于说明) total=None, 预期的迭代次数 leave=True, file=None, ncols=None, 可以自定义进度条的总长度 mininterval=0.1, 最小的更新间隔 maxinterval=10.0, 最大更新间隔 miniters=None, ascii=Non

python进度条显示-tqmd模块的实现示例

Tqdm 是一个快速,可扩展的Python进度条,可以在 Python 长循环中添加一个进度提示信息,用户只需要封装任意的迭代器 tqdm(iterator). 总之,它是用来显示进度条的,很漂亮,使用很直观(在循环体里边加个tqdm),而且基本不影响原程序效率.名副其实的"太强太美"了!这样在写运行时间很长的程序时,是该多么舒服啊! tqdm官网地址:https://pypi.org/project/tqdm/ Github地址:https://github.com/tqdm/tqd

详细介绍Python进度条tqdm的使用

前言 有时候在使用Python处理比较耗时操作的时候,为了便于观察处理进度,这时候就需要通过进度条将处理情况进行可视化展示,以便我们能够及时了解情况.这对于第三方库非常丰富的Python来说,想要实现这一功能并不是什么难事. tqdm就能非常完美的支持和解决这些问题,可以实时输出处理进度而且占用的CPU资源非常少,支持windows.Linux.mac等系统,支持循环处理.多进程.递归处理.还可以结合linux的命令来查看处理情况,等进度展示. 大家先看看tqdm的进度条效果 安装 github

一个简单的jquery进度条示例

用jQuery实现的最简单的进度条,只有不到10行代码.样式可以直接忽略.(有一个图片需要自己找一下) [CSS]代码 复制代码 代码如下: $(function(){    var i=0;    (function progressBar(){ i=i+1; if(i>=101){    i=0; } $("#proc").animate({width:i+"%"},500); $("#progressWord").text(i+&qu

简单实现js进度条加载效果

本文实例为大家分享了js进度条加载效果的具体代码,供大家参考,具体内容如下 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>下载进度</title> <style> /*定义父容器*/ .content{ width: 500px; height: 200px; background: pin

简单实现jQuery进度条轮播实例代码

本文实例为大家分享了jQuery进度条轮播的具体实现代码,供大家参考,具体内容如下  HTML: <div class="bannar"> <div class="img"> <ul> <li style="background:url(img/1.jpg);display:block;"></li> <li style="background:url(img/2.jpg