在使用 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 输出命令行进度条的更多相关文章

  1. PHP生成linux命令行进度条

    <?php$total = 100; for ($i = 1; $i <= $total; $i++) { printf("progress: [%-50s] %d%% Done ...

  2. [Python]命令行进度条

    关键点是输出'\r'这个字符可以使光标回到一行的开头,这时输出其它内容就会将原内容覆盖. import time import sys def progress_test(): bar_length= ...

  3. python实现命令行解析的argparse的使用

    参考https://docs.python.org/3.6/library/argparse.html argparse模块使编写用户友好的命令行界面变得很容易.程序定义了它需要什么参数,argpar ...

  4. Python:如何显示进度条

    首先,推荐一个组件:progressive 效果如下: 进度条和一般的print区别在哪里呢? 答案就是print会输出一个\n,也就是换行符,这样光标移动到了下一行行首,接着输出,之前已经通过std ...

  5. 基于Python与命令行人脸识别项目(系列一)

    Face Recognition 人脸识别 摘要:本项目face_recognition是一个强大.简单.易上手的人脸识别开源项目,并且配备了完整的开发文档和应用案例,方便大家使用.对于本项目可以使用 ...

  6. python制作命令行工具——fire

    python制作命令行工具--fire 前言 本篇教程的目的是希望大家可以通读完此篇之后,可以使用python制作一款符合自己需求的linux工具. 本教程使用的是google开源的python第三方 ...

  7. python 交互式命令行数据库连接助手 -- mysql、sql server (mssql)、redis

    目录 python 交互式命令行数据库连接助手 0. 操作示例 1. python 连接mssql 2. python 连接mysql 3. python 连接redis n. Tips python ...

  8. 仿微信中加载网页时带线行进度条的WebView的实现

    finddreams:http://blog.csdn.net/finddreams/article/details/44172639 为了仿微信中加载网页时带进度条的WebView的实现,首先我们来 ...

  9. 【python】命令行解析工具argparse用法

    python的命令行参数 之前有用到optget, optparse, 现在这些都被弃用了. import argparse parser = argparse.ArgumentParser() ar ...

随机推荐

  1. eclipse打开jsp的方式怎么设置成默认

    https://jingyan.baidu.com/article/4ae03de34137be3eff9e6b93.html

  2. 关于ViewPager高度自适应(随着pager页的高度改变Viewpager的高度)

    该博客借鉴的是某位大神的博客 我只是写一下用后感和总结 博客链接地址 http://blog.csdn.net/qq_34972666/article/details/52386999?locatio ...

  3. java emoji表情存储解决方案

    1.问题产生情况 我遇到这个问题是做微信开发的时候有些有用的头像用了微信的emoji表情,然而我的mysql数据库用的编码是utf8_general_ci,就是utf-8编码,结果也就报错误了. 2. ...

  4. ObjextARX-VS2005-字符串转换

    1.使用string必须添加头文件 #include"string"using namespace std; 2.使用CString必须添加头文件(在非MFC工程中) #inclu ...

  5. Spring mvc简单案例

    jar包 <!--junit--><dependency> <groupId>junit</groupId> <artifactId>jun ...

  6. LogBack日志小记

    优势 看了一下Logback的官方文档,说换成LogBack的原因大概有一下几个: 1. 说是logBack的设计开发和log4j是同一批人员,重写了内核,习惯上总体跟log4j一样,不会有太多生疏感 ...

  7. [问题记录]Ubuntu下chmsee安装失败的解决

    日期:2016年2月26日 一直在找Ubuntu下查看chm的工具但是普遍不理想,发现在deepin中的chmsee相对比较好,但是直接执行网上的sudo apt-get install chmsee ...

  8. 用java代码写一个简单的网上购物车程序

    需求:1.写一个商品类,有商品编号.商品名称.商品分类.商品单价属性.2.写一个商品条目信息类,有商品和数量两个属性,有商品总价格方法. 3.写一个购物车类,有添加商品方法.查看订单信息,删除商品,修 ...

  9. JBOSS默认连接池配置

    jboss5.0mysql连接配置 <?xml version="1.0" encoding="UTF-8"?> <!-- The Hyper ...

  10. 异步 Thread

    Threads 最早的版本,微软推荐不要再使用Thread了thread不支持带返回值的方法本身也没有线程回调,但是可以自己做一个 private void btnThreads_Click(obje ...