Python 输出命令行进度条
在使用 pip 安装时,你会发现有下载进度条,我们也可以借助开源的第三方库来实现这个功能,在项目输出时增加一些可视化效果。
一个简单易用的第三方库是:progress
作者提供了动图很直观地展现了实现的所有输出。

这个库实现了两类样式,一类是有终点的进度条样式,另一类是多用于加载的转圈样式。
import time
from progress.bar import Bar
bar = Bar('Processing', max=100, fill='@', suffix='%(percent)d%%')
for i in range(100):
time.sleep(0.1)
bar.next()
bar.finish()
参数定义的功能:
- max: 进度条最大进度
- fill:进度条填充的字符
- suffix:百分比的样式
运行上述代码会得到输出
Processing |@@@@@@ | 20%
同时也提供上下文的用法(需要用 Github 里的源代码):
with Bar('Processing', max=20) as bar:
for i in range(20):
# Do some work
bar.next()
另一类转圈样式,用法和Bar类似,只要没达到终点就一直调用next方法即可
from progress.spinner import Spinner
spinner = Spinner('Loading ')
while state != 'FINISHED':
# Do some work
spinner.next()
动图里的所有样式都是作者已经实现的派生类,用法基本都一样,当然也可以继承基础类来自己实现更多的功能。
class SlowBar(Bar):
suffix = '%(remaining_hours)d hours remaining'
@property
def remaining_hours(self):
return self.eta // 3600
上面介绍的库,实现的功能很简单,而且默认只能输出到终端。
如果有更复杂的使用场景,推荐使用另一个库:python-progressbar
这个库实现了更多功能,可以自定义组合出一个进度条样式,还可以指定输出流。
基本的使用很简单,可以直接传入迭代对象。
import time
import progressbar
for i in progressbar.progressbar(range(100)):
time.sleep(0.02)
输出如下:
70% (70 of 100) |################ | Elapsed Time: 0:00:01 ETA: 0:00:00
也可以生成对象后调用update方法 。
import time
import progressbar
bar = progressbar.ProgressBar(max_value=100)
for i in range(100):
time.sleep(0.1)
bar.update(i)
最有特点之处就是可以自定义组件,比如我们来实现类似于动图中转圈加载的样式。
import time
import progressbar
widgets = [
'Loading: ',
'[', progressbar.AnimatedMarker(), ']',
' ',
progressbar.Timer()
]
bar = progressbar.ProgressBar(
widgets=widgets, max_value=progressbar.UnknownLength)
for i in range(100):
time.sleep(0.5)
bar.update(i)
输出样式是这样的,方括号中的会一直旋转
Loading: [\] Elapsed Time: 0:00:13
更多功能不再赘述,可以查看 Github 中的文档
欢迎关注
微信公众号:面向人生编程
编程思维不应只存留在代码之中,更应伴随于整个人生旅途,这个公众号不只聊技术,还会聊产品/互联网/经济学等广泛话题,所以也欢迎非程序员关注。
Python 输出命令行进度条的更多相关文章
- PHP生成linux命令行进度条
<?php$total = 100; for ($i = 1; $i <= $total; $i++) { printf("progress: [%-50s] %d%% Done ...
- [Python]命令行进度条
关键点是输出'\r'这个字符可以使光标回到一行的开头,这时输出其它内容就会将原内容覆盖. import time import sys def progress_test(): bar_length= ...
- python实现命令行解析的argparse的使用
参考https://docs.python.org/3.6/library/argparse.html argparse模块使编写用户友好的命令行界面变得很容易.程序定义了它需要什么参数,argpar ...
- Python:如何显示进度条
首先,推荐一个组件:progressive 效果如下: 进度条和一般的print区别在哪里呢? 答案就是print会输出一个\n,也就是换行符,这样光标移动到了下一行行首,接着输出,之前已经通过std ...
- 基于Python与命令行人脸识别项目(系列一)
Face Recognition 人脸识别 摘要:本项目face_recognition是一个强大.简单.易上手的人脸识别开源项目,并且配备了完整的开发文档和应用案例,方便大家使用.对于本项目可以使用 ...
- python制作命令行工具——fire
python制作命令行工具--fire 前言 本篇教程的目的是希望大家可以通读完此篇之后,可以使用python制作一款符合自己需求的linux工具. 本教程使用的是google开源的python第三方 ...
- python 交互式命令行数据库连接助手 -- mysql、sql server (mssql)、redis
目录 python 交互式命令行数据库连接助手 0. 操作示例 1. python 连接mssql 2. python 连接mysql 3. python 连接redis n. Tips python ...
- 仿微信中加载网页时带线行进度条的WebView的实现
finddreams:http://blog.csdn.net/finddreams/article/details/44172639 为了仿微信中加载网页时带进度条的WebView的实现,首先我们来 ...
- 【python】命令行解析工具argparse用法
python的命令行参数 之前有用到optget, optparse, 现在这些都被弃用了. import argparse parser = argparse.ArgumentParser() ar ...
随机推荐
- 洛谷 P1031 均分纸牌
P1031 均分纸牌 这道题告诉我们,对于实在想不出算法的题,可以大胆按照直觉用贪心,而且在考试中永远不要试着去证明贪心算法,因为非常难证,会浪费大量时间. (这就是你们都不去证的理由??) 这道题贪 ...
- 利用串口的硬件buf收发数据
很多单片机的串口可以设置硬件接收和发送的buf,这样可以减少中断的次数和cpu的浪费,方法就是:发送时根据串口波特率(通讯格式N-8-1)和硬件buf缓冲的字节数计算定时器的间隔(小于1000*buf ...
- 用vue.js重构订单计算页面
在很久很久以前做过一个很糟糕的订单结算页面,虽然里面各区域(收货地址)使用模块化加载,但是偶尔会遇到某个模块加载失败的问题导致订单提交的数据有误. 大致问题如下: 1. 每个模块都采用usercont ...
- Vuex.js状态管理共享数据 - day8
VScode文件目录: amount.vue代码如下: <template> <div> <!-- <h3>{{ $store.state.count }}& ...
- hdoj薛猫猫杯程序设计网络赛1003 球球大作战
思路: 二分,check函数不是很好写. 实现: 1. #include <bits/stdc++.h> using namespace std; typedef long long ll ...
- IOS之UI异步刷新
NSOperationQueue *operationQueue; // for rendering pages on second thread [operationQueue waitUn ...
- iis的网站发布
1.打开IIS服务器,添加“新网站”,命名网站的名称.物理路径(存放index.aspx的文件路径).ip地址和端口:2.在已经添加的网站,启用“目录浏览”,“默认文档”设置将要打开的网页 注:(1) ...
- Grid Infrastructure 启动的五大问题 (文档 ID 1526147.1)
适用于: Oracle Database - Enterprise Edition - 版本 11.2.0.1 和更高版本本文档所含信息适用于所有平台 用途 本文档的目的是总结可能阻止 Grid In ...
- 1.JOIN和UNION区别
1.JOIN和UNION区别join 是两张表做交连后里面条件相同的部分记录产生一个记录集,union是产生的两个记录集(字段要一样的)并在一起,成为一个新的记录集 . JOIN用于按照ON条件联接两 ...
- 集成iAd广告
在iPhone程序中集成广告,管他能不能赚钱,不放上一个iAd就心有不甘. 参考了下面这篇文章: http://bees4honey.com/blog/tutorial/how-to-add-iad- ...