当前位置:

首页 > 编程开发 > 如何使用Python的progress库实现进度条功能?

如何使用Python的progress库实现进度条功能?

progress库安装和介绍1.安装progress库progress是Python第三方库,在终端执行pip命令安装。pipinstallprogress2.progress进度条效果展示在官网可以看到progress能实现的各种进度条效果,如下动图。progress实现进度条#coding=utf-8fromprogress.barimportBarimporttime#创建Bar类的实例bar=Bar('MyProcess:',max=100)#循环处理某业务,调用bar对象的nex

本文目录

    progress库安装和介绍

    1.安装progress库

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

    pip install progress

    2.progress进度条效果展示

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

    如何使用Python的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()

    运行效果:

    如何使用Python的progress库实现进度条功能?

    使用 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,进入运行配置页面。

    如何使用Python的progress库实现进度条功能?

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

    如何使用Python的progress库实现进度条功能?

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

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

    如何使用Python的progress库实现进度条功能?

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

    如何使用Python的progress库实现进度条功能?

    在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()

    运行效果:

    如何使用Python的progress库实现进度条功能?

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

    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)

    运行效果:

    如何使用Python的progress库实现进度条功能?

    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)

    运行效果:

    如何使用Python的progress库实现进度条功能?

    汇总

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

    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库实现进度条功能?

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

    本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系bd@zhengruan.com
    作者最新文章
    编程开发 Python
    相关文章 更多
    python删除一个列表里的重复元素的方法与代码示例
    python删除一个列表里的重复元素的方法与代码示例

    学习如何使用Python高效删除列表中的重复元素。本文提供5种常见方法的代码示例,涵盖保持顺序与不保持顺序的场景,适合初学者和进阶开发者参考。

    Python写接口的步骤及完整代码示例
    Python写接口的步骤及完整代码示例

    详细讲解使用Python编写Web接口的核心步骤与完整代码示例,涵盖环境准备、路由定义、数据校验、服务启动及调试测试方法。

    codex怎么读取word文档及docx文件操作教程
    codex怎么读取word文档及docx文件操作教程

    介绍如何利用编程工具读取和解析Word文档(docx格式),涵盖基础文本提取代码示例、结构化数据处理逻辑,以及处理复杂排版时的技术局限与替代方案。

    怎么在Python中调用C语言代码提升性能
    怎么在Python中调用C语言代码提升性能

    详细讲解在Python中调用C语言代码提升性能的完整实践指南,包含原理分析、编译步骤、ctypes与CFFI具体实现、性能对比及常见陷阱。

    Python与C语言的性能差异及底层原理
    Python与C语言的性能差异及底层原理

    深入解析Python与C语言在执行效率上的数量级差异,从编译机制、变量内存布局、动态类型推断到GIL锁,系统阐明底层核心原理。

    Python和C语言哪个更适合编程入门
    Python和C语言哪个更适合编程入门

    客观对比Python与C语言在心智负担、底层机制与学习反馈上的核心差异,提供清晰有据的选择标准与切实的入门学习路径。

    selenium上传文件教程本地文件路径设置方法
    selenium上传文件教程本地文件路径设置方法

    深入解析Selenium处理文件上传的技术细节,涵盖标准HTML控件的路径直接注入法与非标准控件的系统级模拟方案,提供Windows与Linux环境下的路径设置最佳实践及常见异常排查。

    大数据开发语言选型:Java对比Scala与Python的优缺点及适用场景
    大数据开发语言选型:Java对比Scala与Python的优缺点及适用场景

    针对大数据工程场景,系统对比Java、Scala与Python在执行性能、生态结合、开发效率和维护成本上的核心差异,给出清晰的架构选型依据与落地方案。

    langgraph python guide中文入门教程详解
    langgraph python guide中文入门教程详解

    本篇LangGraph Python中文入门教程详解,系统梳理StateGraph状态机定义、节点编写、边与条件路由、检查点持久化(MemorySaver)等核心机制,提供从环境安装到完整循环智能体构建的代码示例与实操指导。

    Windows 安装 Python:从官方入口到虚拟环境的可复现实践
    Windows 安装 Python:从官方入口到虚拟环境的可复现实践

    面向后端开发者,基于 Python 官方文档说明如何在 Windows 上安装 Python、创建 venv 虚拟环境及使用 pip 管理依赖。包含可复制命令、验证方法及工具选择边界,避免常见配置误区。

    查看更多
    精品专题 更多
    装机必备
    装机必备

    正软商城装机必备专区,精选办公、浏览器、安全防护、影音播放、压缩解压、设计创作和系统工具等电脑常用正版软件,帮助用户快速完成新电脑软件配置。

    Windows
    Windows

    正软商城Windows软件专区,汇集适用于Windows电脑的办公、设计、安全防护、影音播放、开发工具和系统优化软件,提供软件介绍、系统要求、正版授权及购买下载服务。

    PDF教程
    PDF教程

    正软商城PDF教程频道提供PDF编辑、转换、合并、拆分、压缩及格式处理方法,同时介绍常用PDF软件和工具的使用技巧。

    Mac软件 更多
    讯飞智作 网页版
    讯飞智作 网页版
    Windows/ macOS/ Linux

    讯飞智作是一款基于语音合成技术、虚拟人驱动技术与数字人形象声音构建能力的 AI 数字人音视频创作平台。

    火山引擎 网页版
    火山引擎 网页版
    Windows/ macOS/ Linux

    火山引擎是字节跳动旗下企业级云与AI服务平台。聚焦大模型核心能力,依托字节自研豆包多模态大模型,凭借火山方舟一站式平台,提供模型精调、推理部署、智能应用搭建等全链路服务,结合高性能AI算力,助力各行业快速落地大模型数字化与智能化应用。

    Aperty macOS版
    Aperty macOS版
    macOS

    Aperty 是 Skylum 推出的 AI 人像修图软件,支持自然肤质修饰、瑕疵处理、面部与身体调整、预设及批量同步。

    WINDOWS 更多
    讯飞智作 网页版
    讯飞智作 网页版
    Windows/ macOS/ Linux

    讯飞智作是一款基于语音合成技术、虚拟人驱动技术与数字人形象声音构建能力的 AI 数字人音视频创作平台。

    火山引擎 网页版
    火山引擎 网页版
    Windows/ macOS/ Linux

    火山引擎是字节跳动旗下企业级云与AI服务平台。聚焦大模型核心能力,依托字节自研豆包多模态大模型,凭借火山方舟一站式平台,提供模型精调、推理部署、智能应用搭建等全链路服务,结合高性能AI算力,助力各行业快速落地大模型数字化与智能化应用。

    PixTV 网页版
    PixTV 网页版
    Windows

    PixTV 是一款在浏览器中使用的 AI 视觉内容创作平台,提供图片、视频、音频、文字生成、AI 分镜、局部重绘、提示词反推和无限画布等工具,适合短剧、漫剧、广告及社交媒体内容制作。