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

 更新时间:2016年02月14日 09:49:26   投稿:mrr  
Python是一门与php有点像的编辑语言了,下文来给各位在利用Python实现进度条了,对Python在Console下显示文本进度条的方法相关知识感兴趣的朋友一起学习吧

进度条实现原理

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

在用Python处理耗时的任务时,往往希望能够了解到任务当前的处理进度,这个时候需要在任务中不断打印出任务的进度信息。一般我们是这样的:

def process_mission():
""" 任务处理方法 """
# 这里是任务处理过程
print('当前处理到第[%d]项' % count)
# 这里是任务处理过程

这种方式会在窗口输出一堆类似下面这样的信息:

当前处理到第1项
当前处理到第2项
当前处理到第3项
当前处理到第4项
当前处理到第5项
....

这种信息有可能非常非常的长,也有可能输出的时候非常非常的快,以至于根本就无法看清楚(输出非常快的时候)。

这时候,我们期待这样的功能:

[================== ] 25.60%

但如果纯粹的使用 print 是无法达到效果的,会变成和前面一样,满屏都是这种杠杠。

如何正确显示进度条呢?

Python提供了一个模块,叫: progressbar ,当使用这个模块之后,你要显示进度的仅需如下:

import progressbar
# 先定义一个进度条
# http://blog.useasp.net/
pbar = progressbar.ProgressBar(maxval=100, \
widgets=[progressbar.Bar('=', '[', ']'), ' ', \
progressbar.Percentage()])
for i in xrange(100):
# 更新进度条
pbar.update(i+1)
pbar.finish()

# Ok,到此完结。

是不是很容易就完成进度条的显示?不过遗憾的是,这个python模块并不是默认的,而是需要安装:

pip install progressbar

如果没有安装 pip 可以 参考这里 。

对于只要一个简单进度条的人来说,安装个python包似乎有点动静太大,那么,自己动手写一个便是了。

下面是Mitchell自己写的一个类似的进度条,不用安装包,简单易用。

# 在使用本方法之前,请先做如下import
# from __future__ import division
# import math
# import sys
# ##blog.useasp.net##
def progressbar(cur, total):
percent = '{:.2%}'.format(cur / total)
sys.stdout.write('\r')
sys.stdout.write("[%-50s] %s" % (
'=' * int(math.floor(cur * 50 / total)),
percent))
sys.stdout.flush()

说明:

cur , total :一个是当前值,一个是总值。 cur 在任务的处理过程中会不断向 total 靠近,直到两者相等,任务结束

需要注意的是,这两个可能为整型,因此要引入 division 。

在使用的时候,只需要调用 progressbar 即可在控制台输出进度条。

# 调用方式举例
progressbar(2, 100)
progressbar(3.9, 10)
progressbar(3283, 27379)

到此,我们完成了一个会在控制台动态更新的进度条。

以上所述是小编给大家介绍的Python在Console下显示文本进度条的方法,希望对大家有所帮助。

相关文章

  • 深入了解Python的多线程基础

    深入了解Python的多线程基础

    这篇文章主要为大家介绍了Python多线程基础,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2021-11-11
  • 关于PyCharm安装后修改路径名称使其可重新打开的问题

    关于PyCharm安装后修改路径名称使其可重新打开的问题

    这篇文章主要介绍了关于PyCharm安装后修改路径名称使其可重新打开的问题,本文通过图文实例相结合给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-10-10
  • Python通过队列来实现进程间通信的示例

    Python通过队列来实现进程间通信的示例

    这篇文章主要介绍了Python通过队列来实现进程间通信的示例,帮助大家更好的理解和使用python,感兴趣的朋友可以了解下
    2020-10-10
  • Python常见的几种数据加密方式

    Python常见的几种数据加密方式

    这篇文章主要分享的是Python常见的几种数据加密方式,主要包括线性散列算法(签名算法)MD5,sha1、对称性加密算法 AES DES、非对称性加密算法 RSA,具体详细内容介绍,需要的小伙伴可以参考一下
    2022-06-06
  • python isinstance函数用法详解

    python isinstance函数用法详解

    这篇文章主要介绍了python isinstance函数用法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-02-02
  • Python 生成 -1~1 之间的随机数矩阵方法

    Python 生成 -1~1 之间的随机数矩阵方法

    今天小编就为大家分享一篇Python 生成 -1~1 之间的随机数矩阵方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-08-08
  • Python实现从SQL型数据库读写dataframe型数据的方法【基于pandas】

    Python实现从SQL型数据库读写dataframe型数据的方法【基于pandas】

    这篇文章主要介绍了Python实现从SQL型数据库读写dataframe型数据的方法,涉及Python基于pandas的数据库读写相关操作技巧,需要的朋友可以参考下
    2019-03-03
  • python 模拟创建seafile 目录操作示例

    python 模拟创建seafile 目录操作示例

    这篇文章主要介绍了python 模拟创建seafile 目录操作,结合实例形式详细分析了Python模拟创建seafile 目录相关操作技巧,需要的朋友可以参考下
    2019-09-09
  • Python基础知识快速上手入门学习

    Python基础知识快速上手入门学习

    本篇文章使用代码示例,一看就会,从基础语法、变量类型、运算符和条件语句多个方面详细阐述了Python基础知识快速上手入门学习的内容,希望本文能对Python初学者有所帮助
    2023-08-08
  • Python装饰器使用示例及实际应用例子

    Python装饰器使用示例及实际应用例子

    这篇文章主要介绍了Python装饰器使用示例及实际应用例子,本文给出了斐波拉契数列、注册回调函数、mysql封装、线程异步等实际使用示例,需要的朋友可以参考下
    2015-03-03

最新评论