广告
返回顶部
首页 > 资讯 > 后端开发 > Python >一文教你用Python中progress库实现进度条
  • 315
分享到

一文教你用Python中progress库实现进度条

Python 官方文档:入门教程 => 点击学习

摘要

目录progress库安装和介绍progress实现进度条PyCharm进度条显示问题解决进度条代码的另外两种写法实现更多种类的进度条汇总progress库安装和介绍 1.安装pro

progress库安装和介绍

1.安装progress库

progress是python第三方库,在终端执行 pip 命令安装。

pip install progress

2.progress进度条效果展示

progress的pypi源地址为:https://pypi.org/project/progress/

在官网可以看到progress能实现的各种进度条效果,如下动图。

progress实现进度条

# coding=utf-8
from progress.bar import Bar
import time

# 创建Bar类的实例
bar = Bar('MyProcess:', max=100)
# 循环处理某业务,调用bar对象的next()方法,循环次数等于max
for _ in range(100):
	# Do some work
    time.sleep(0.05)
    bar.next()
# 循环完成后调用finish()方法
bar.finish()

运行效果:

使用 progress 库实现进度条很简单,从 progress 库的 bar.py 中导入 Bar 类,实例化一个对象,然后循环处理业务和调用 next() 方法,处理完成后调用 finish() 方法结束进度条。

Bar 类的主要参数有:

  • message: 进度条显示的信息,这个参数默认可以用位置参数传给 Bar 。
  • width: 修改进度条的宽度,默认32。
  • max: 进度条被分成几等份,如100。
  • suffix: 进度百分比显示的格式,默认 ‘%(index)d/%(max)d’ 。
  • fill: 进度条用什么填充,默认’#’ 。
  • empty_fill: 未加载的进度条用什么填充,默认空格’ ’ 。
  • bar_prefix: 进度条前缀,默认’ |’ 。
  • bar_suffix: 进度条后缀,默认’| ’ 。
  • color: 进度条的颜色,默认None。

PyCharm进度条显示问题解决

大部分Python程序员都使用PyCharm,如果在PyCharm中运行进度条代码后没有显示进度条效果,可以按照如下步骤设置,再重新运行代码。

Step1. 点击PyCharm上方的 Run 按钮,然后点击 Edit Configurations,进入运行配置页面。

Step2. 将 Emulate terminal in output console 选项打钩,然后重新运行代码。

细心的小伙伴应该发现了,上面的进度条代码在PyCharm中运行完成后,进度条下有一串奇怪的字符: ‘?[?25h’ ,在终端中用脚本方式 python progress_demo.py 运行相同的代码,不会有这串符号。

这串字符表示的是光标,在PyCharm中运行完成后,光标被输出在控制台上了。解决方法为:按住 Ctrl 键,点击导入的 Bar 类名,跳转到源码 bar.py 中,再按住 Ctrl 键点击 Bar 类继承的 Progress 类,进入 progress 库的 __init__.py 文件中,将该文件中的 SHOW_CURSOR 变量改为空字符串

修改源码后再重新运行代码,光标不显示了,那一串字符也就不显示了。

在PyChram中运行进度条,还可能会遇到其他显示问题,建议出现问题时,用脚本的方式运行,以脚本运行的结果为准,PyChram中运行只用来调试代码。

进度条代码的另外两种写法

1. 上下文管理器: 使用 with … as … 上下文管理器的方式编写进度条,进度条完成后无需调用 finish() 方法。

with Bar('Processing', max=20) as bar:
    for i in range(20):
        time.sleep(0.05)
        bar.next()

2. 使用 iter() 方法: 使用 iter() 方法可以简化迭代器的工作,不需要调用 next() 方法。

for i in Bar('Processing').iter(range(100)):
    time.sleep(0.05)

这两种实现方式执行的结果与最开始的实现方式一样。

实现更多种类的进度条

1. Bar 系列

前文中点进了progress的源码,可以看到 Bar 类继承自 Progress 类,Progress 类继承自 Infinite 类,Progress 类和 Infinite 类实现了进度条的基本功能。

在 bar.py 中,除了 Bar 类,还有6个类,ChargingBar, FillingSquaresBar, FillinGCirclesBar, IncrementalBar, PixelBar, ShadyBar,它们分别是 Bar 类的子类或孙类,继承了进度条的功能,在每一个类中只是修改了 suffix, fill, empty_fill, bar_prefix, bar_suffix这些变量的值,修改了进度条的样式。

使用很简单,只需要导入这些类,将上面代码中的 Bar 换成这些类就行了,如 FillingSquaresBar。

from progress.bar import Bar, ChargingBar, FillingSquaresBar, FillingCirclesBar, IncrementalBar, PixelBar, ShadyBar
import time

bar = FillingSquaresBar('MyProcess:', max=100)
for i in range(100):
    time.sleep(0.05)
    bar.next()
bar.finish()

运行效果:

还可以自己修改上面的参数,设置个性化的进度条,本文暂不扩展,以后有空可以专门写文章介绍。

2. Spinner 系列

progress 库的 spinner.py 中实现了 5 个类,Spinner, PieSpinner, MoonSpinner, LineSpinner, PixelSpinner。

from progress.spinner import Spinner, PieSpinner, MoonSpinner, LineSpinner, PixelSpinner

for i in Spinner('MySpinner:').iter(range(100)):
    time.sleep(0.01)

运行效果:

3.Counter 系列

progress 库的 counter.py 中实现了 4 个类,Counter, Countdown, Stack, Pie。

from progress.counter import Counter, Countdown, Stack, Pie
import time

for i in Counter('Loading:').iter(range(100)):
    time.sleep(0.01)

运行效果:

汇总

接下来将上面介绍的所有种类的进度条全部放到一起,代码如下:

from progress.bar import Bar, ChargingBar, FillingSquaresBar, \
    FillingCirclesBar, IncrementalBar, PixelBar, ShadyBar
from progress.spinner import Spinner, PieSpinner, MoonSpinner, LineSpinner, PixelSpinner
from progress.counter import Counter, Countdown, Stack, Pie
import time
import random

progess_list = [Bar, ChargingBar, FillingSquaresBar, FillingCirclesBar, IncrementalBar,
                PixelBar, ShadyBar, Spinner, PieSpinner, MoonSpinner, LineSpinner,
                PixelSpinner, Counter, Countdown, Stack, Pie]
for P in progess_list:
    for i in P(P.__name__ + ':').iter(range(100)):
        time.sleep(0.01)

bar = IncrementalBar('Random:', suffix='%(index)d%%')
for i in range(100):
    bar.Goto(random.randint(0, 100))
    time.sleep(0.01)
bar.finish()

运行效果:

运行代码后可以得出所有种类的进度条,与文章开头从官网截的图效果相同。

到此这篇关于一文教你用Python中progress库实现进度条的文章就介绍到这了,更多相关Python progress进度条内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: 一文教你用Python中progress库实现进度条

本文链接: https://www.lsjlt.com/news/201235.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 一文教你用Python中progress库实现进度条
    目录progress库安装和介绍progress实现进度条PyCharm进度条显示问题解决进度条代码的另外两种写法实现更多种类的进度条汇总progress库安装和介绍 1.安装pro...
    99+
    2023-03-24
    Python progress实现进度条 Python progress进度条 Python progress Python 进度条
  • 如何用Python中progress库实现进度条
    这篇文章主要介绍“如何用Python中progress库实现进度条”,在日常操作中,相信很多人在如何用Python中progress库实现进度条问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”如何用Python...
    99+
    2023-07-05
  • Android项目中使用Progress实现一个环形进度条
    这期内容当中小编将会给大家带来有关Android项目中使用Progress实现一个环形进度条,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。效果图:代码实现:设置已完成步数和目标步数: public vo...
    99+
    2023-05-31
    android gr progress
  • 一篇文章教你用Python实现一键文件重命名
    目录应用背景准备工作上脚本view.py功能展示打包方式windows打包方式:pycharm打包为exe执行文件方法总结应用背景 背景:“由于工作需要可能需要对一些文件进行重命名的...
    99+
    2022-11-12
  • python使用tqdm库实现循环打印进度条
    1. while 循环 Python的while循环可以打印进度条,可以使用tqdm这个库来实现。tqdm是一个用于在Python中添加进度条的库,它可以很容易地集成到while循环...
    99+
    2023-05-18
    python打印进度条 python循环打印
  • Python中怎么使用Flask实现进度条
    本篇内容主要讲解“Python中怎么使用Flask实现进度条”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Python中怎么使用Flask实现进度条”吧!使用Flask实现进度条问题描述Pyth...
    99+
    2023-06-30
  • python怎么使用tqdm库实现循环打印进度条
    1. while 循环Python的while循环可以打印进度条,可以使用tqdm这个库来实现。tqdm是一个用于在Python中添加进度条的库,它可以很容易地集成到while循环中。下面是一个简单的示例,它使用while循环和tqdm库来...
    99+
    2023-05-21
    Python tqdm
  • 如何在Python中使用Tqdm模块实现一个进度条功能
    本文章向大家介绍如何在Python中使用Tqdm模块实现一个进度条功能,主要包括如何在Python中使用Tqdm模块实现一个进度条功能的使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。Pytho...
    99+
    2023-06-06
  • 怎么用一行Python代码快速实现程序进度条
    这篇文章主要讲解了“怎么用一行Python代码快速实现程序进度条”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么用一行Python代码快速实现程序进度条”吧!1、先上代码下载进度条的第三方...
    99+
    2023-07-05
  • 一篇文章教你用Python实现一个学生管理系统
    目录片头源码:总结片头 Python看了差不多三四天吧,基本上给基础看差不多了。写个管理系统吧,后续不出意外SQL、文件存储版本都会更。 学习Python感想: ...
    99+
    2022-11-12
  • 教你用python实现一个加密的文字处理器
    这是一个类似于记事本的文字处理器。与正常的记事本不同的是,它会将文本文档进行加密,确保无法被常规的程序打开。 由于本人是一位业余编程爱好者,对于“python之禅&rdq...
    99+
    2022-11-11
  • C#中怎么利用 WinForm实现一个进度条效果
    C#中怎么利用 WinForm实现一个进度条效果,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。首先是进度条窗体,需要在上面添加进度条,然后去掉ControlBox。除此外,还要...
    99+
    2023-06-17
  • 使用struts2实现一个文件上传功能并显示进度条
    本篇文章为大家展示了使用struts2实现一个文件上传功能并显示进度条,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。一. struts2读取进度原理分析 在strut2中控制文件上传信息的类是实现M...
    99+
    2023-05-31
    struts2 文件上传 进度条
  • Python编程使用PyQt5库实现动态水波进度条示例
    目录原理介绍代码实操最近做了一个小项目,里面有一个需求需要添加一个动态进度条,进度条的样式就类似于水波来回起伏的那种形状,下面就是最初的展示效果(有一点区别,这里我加了一个进度自动增...
    99+
    2022-11-12
  • 怎么在css3中使用clip实现一个圆环进度条
    这期内容当中小编将会给大家带来有关怎么在css3中使用clip实现一个圆环进度条,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。实现思路圆环很简单,一行cssborder-radius:50%即可实现,而且...
    99+
    2023-06-08
  • C#中怎么利用异步实现一个进度条效果
    本篇文章给大家分享的是有关C#中怎么利用异步实现一个进度条效果,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。C#进度条实现之异步实例进度条页面://==============...
    99+
    2023-06-17
  • 如何在Android应用中利用节点实现一个进度条
    如何在Android应用中利用节点实现一个进度条?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。main.xml<RelativeLayout xmlns:a...
    99+
    2023-05-31
    android 节点 roi
  • android开发中使用view实现自定义一个进度条功能
    今天就跟大家聊聊有关android开发中使用view实现自定义一个进度条功能,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。1、自定义属性:<&#63;xml versi...
    99+
    2023-05-31
    android view roi
  • 如何在Android应用中利用ProgressBar实现一个直线进度条功能
    今天就跟大家聊聊有关如何在Android应用中利用ProgressBar实现一个直线进度条功能,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。Java代码:package com.ex...
    99+
    2023-05-31
    android progressbar gr
  • 在Android应用中利用异步任务实现一个进度条下载功能
    在Android应用中利用异步任务实现一个进度条下载功能?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。为什么要用异步任务?在Android中只有在主线程才能对u...
    99+
    2023-05-31
    android roi
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作