我们在写一些python程序时,如果程序运行时间较长,我们希望能够有一个进度条来动态的展示程序运行进度。

首先能想到的做法是用print将执行到第几步打印出来,但这样显然不是我们想要的进度条,显示进度占用了很多行,原因是print在末尾默认加上了”\n”换行符。详见《你应该知道的print》。

我们对进度条的需求:一是进度信息在一行中显示;二是每次都能够动态擦除一行中上一次的内容。那么很自然的想到print有没有相应的转义符,还真有这么一个,”\r”。

import time
N = 1000
for i in range(N):print("进度:{0}%".format(round((i + 1) * 100 / N)), end="\r")time.sleep(0.01)

输出格式:
100%

进度显示的问题解决了,有时候我们需要有一些时间方面的显示;例如已经耗费了多长时间,预计还剩下多少时间等。

import time
N = 1000
st = time.clock()
for i in range(N):p = round((i + 1) * 100 / N)duration = round(time.clock() - st, 2)remaining = round(duration * 100 / (0.01 + p) - duration, 2)print("进度:{0}%,已耗时:{1}s,预计剩余时间:{2}s".format(p, duration, remaining), end="\r")time.sleep(0.01)

输出格式:进度:100%,已耗时:10s,预计剩余时间:10s

上面代码中计算remaining时p加上了0.01,是为了避免除0问题。

至此,控制台进度条可以工作了,但代码在不同地方使用时会比较冗余,理解了原理,可以封装成一个库。

实际上早就有人已经做好这个工作了,而且功能更加强大丰富。这里推荐progressbar,下载地址为https://pypi.python.org/pypi/progressbar2

  • 简单用法1
import time
import progressbar
p = progressbar.ProgressBar()
N = 1000
for i in p(range(N)):time.sleep(0.01)
  • 简单用法2
import time
import progressbar
p = progressbar.ProgressBar()
N = 1000
p.start(N)
for i in range(N):time.sleep(0.01)p.update(i+1)
p.finish()

两种简单用法的输出格式都是:
100% (1000 of 1000) |#####################| Elapsed Time: 0:00:10 Time: 0:00:10
包含了百分百进度,数量进度,#号前进条,耗费时间,剩余时间。

  • 高级点的用法(自己配置输出格式)
import time
import progressbar
bar = progressbar.ProgressBar(widgets=[' [', progressbar.Timer(), '] ',progressbar.Percentage(),' (', progressbar.ETA(), ') ',
])
for i in bar(range(1000)):time.sleep(0.01)

输出格式:
[Elapsed Time: 0:00:10] 100% (Time: 0:00:10)

主要方式有如下几种,可自由搭配:

'Timer',          # 计时器
'ETA',            # 预计剩余时间
'AbsoluteETA',    # 预计结束的绝对时间,耗时很长时使用较方便
'Percentage',     # 百分比进度,30%
'SimpleProgress', # 计数进度,300/1000
'Counter',        # 单纯计数
'Bar'             # “#”号进度条

例如:

import time
import progressbar
bar = progressbar.ProgressBar(widgets=[progressbar.Percentage(),' (', progressbar.SimpleProgress(), ') ',' (', progressbar.AbsoluteETA(), ') ',])
for i in bar(range(1000)):time.sleep(0.01)

输出示例:
54% ( 545 of 1000) (Estimated finish time: 2016-11-06 19:26:15)

Python如何在控制台显示进度条相关推荐

  1. python gui下载进度条_对python GUI实现完美进度条的示例详解

    在用python做一个gui界面时,想搞一个进度条实时显示下载进度,但查阅很多博客,最后的显示效果都类似下面这种: 这种效果在cmd界面看着还可以,但放到图形界面时就有点丑了,所以我用canvas重新 ...

  2. Python中4种进度条的使用方法

    如果你之前没用过进度条,八成是觉得它会增加不必要的复杂性或者很难维护,其实不然.要加一个进度条其实只需要几行代码.在这几行代码中,我们可以看看如何在命令行脚本以及 PySimpleGUI UI 中添加 ...

  3. python下载结合tqdm进度条

    python下载结合tqdm进度条 本篇内容知识点: 1.tqdm库展现可迭代对象控制台进度条 2.requests简单数据爬取并下载文件 安装: pip install tqdm pip insta ...

  4. python实现验证码与进度条

    1.简单验证码 # python 实现验证码 #1import random n = 5lis = list() count = 0 while count<n:count+=1lis.appe ...

  5. 【Python】tqdm创建进度条

    1.Introduction 每当代码中涉及 for 循环时,总想显示一个进度条,虽然用处不大,但是帅就完事了.之前在 Matlab 里实现过这个功能,这次在 Python 中试试~ 2.Materi ...

  6. python progressbar print_python print 进度条的例子

    def progress(width, percent): print "%s %d%%\r" % (('%%-%ds' % width) % (width * percent / ...

  7. 【Python笔记】pyqt5进度条-多线程图像分块处理防止窗体卡顿

    目录 主要功能 环境配置 实现过程 1.设计ui 主界面 弹出框 窗体文件 2.主体实现 打开文件 计算函数 代码附录 title.ui titleok.ui title.py titleok.py ...

  8. Python的Tqdm模块——进度条配置

    tqdm官网地址:https://pypi.org/project/tqdm/ Github地址:https://github.com/tqdm/tqdm 简介 Tqdm 是一个快速,可扩展的Pyth ...

  9. python tqdm自定义更新进度条

    主要使用tqdm.update方法 案例 from tqdm import tqdm import timepbar = tqdm(total=200) # 设置总长度 for i in range( ...

最新文章

  1. 【Ubuntu】ping: unknown host www.baidu.com
  2. AC日记——丑数 codevs 1246
  3. 「原创」马云又嗨啦,云栖音乐节与李健同台飙歌,把健哥都带跑调了
  4. day3:编码,基本数据类型操作,字符串的操作
  5. poll函数_I/O--多路复用的三种机制Select,Poll和Epoll对比
  6. 创维广电服务器无线,创维电视连有线网、连无线网详细图文教程
  7. 【实施工程师】Linux怎么查看当前进程
  8. 递归-递归的特点及基本代码演练
  9. Java_WEB项目OOM(OutOfMemError内存溢出) MyEclipse配置Jvm内存
  10. 生信宝典Linux学习系列文章整理
  11. 什么叫做java程序中的继承_【Java】基础16:什么叫继承?
  12. 鸿蒙内核之内存调测:动态内存池信息统计
  13. php文本域输出_如何在文本分类任务中Fine-Tune BERT
  14. java多线程安全解决方案_《Java多线程编程核心技术(第2版)》 —1.2.8 实例变量共享造成的非线程安全问题与解决方案...
  15. .net语言中使用MapWinGIS.ocx
  16. XElement.Load 需要释放吗_因为信用卡逾期还不上坐牢了,刑满释放后,还需要继续还钱吗?...
  17. Choosing Capital for Treeland codeforce 219-D
  18. 一半嫁妆钱,换了90000张照片,一个老爹的摄影计划
  19. db_create_file_dest
  20. [Adaptive Autosar]深入理解--学习资料汇总

热门文章

  1. 一文教你 Dubbo 服务性能压测(with JMeter)
  2. 带你学python基础:模块和包
  3. url,html,javascript中的转义字符
  4. 03-JDBC学习手册:JDBC中几个重要接口和异常处理
  5. java 球面距离_[置顶] C语言实验题:已知地球上两点的经度和纬度求其球面距离...
  6. matplotlib 横坐标只显示整数_matplotlib初学:这样画折线图和添加标注、箭头
  7. Bootstrap日期插件之Datetimepicker修改默认语言(附带源码)
  8. Struts的Map
  9. Docker之tomcat和nginx的部署
  10. linux 关于减号 - 代替stdin 和stdout 的用法