【python进度条】Python实现进度条的几种方法

python进度条

  • 方法一:使用print()函数实现文本进度条
  • 方法二:使用tqdm库
  • 方法三:使用progress库
  • 方法四:使用alive-progress库
  • 方法五:使用rich库
  • 方法六:自定义图形进度条
  • 总结

在Python编程中,进度条是一种常用的工具,用于向用户展示程序的执行状态和进度。本文将介绍几种实现进度条的方法,适合新手小白理解,并通过简单的示例来帮助你掌握这些技巧。

方法一:使用print()函数实现文本进度条

最基本的方式是通过打印文本来显示进度条。这种方法不依赖任何额外的库。

示例代码

import time
import sysdef print_progress_bar(iteration, total, prefix='', length=50):percent = (iteration / total) * 100filled_length = int(length * iteration // total)bar = '█' * filled_length + '-' * (length - filled_length)sys.stdout.write(f'\r{prefix} |{bar}| {percent:.2f}% Complete')sys.stdout.flush()# 示例用法
total_steps = 100
for i in range(total_steps + 1):print_progress_bar(i, total_steps)time.sleep(0.1)print()  # 换行,以便最后输出后换行

解释在这个例子中,print_progress_bar函数负责计算进度并打印进度条。sys.stdout.writesys.stdout.flush用于动态更新同一行的输出。

方法二:使用tqdm库

tqdm是一个非常流行且强大的进度条库,能够轻松地在循环中添加进度条。
示例代码

from tqdm import tqdm
import time# 示例用法
total_steps = 100
for i in tqdm(range(total_steps)):time.sleep(0.1)  # 模拟工作

解释在这个示例中,我们只需将range传给tqdm,它会自动为我们生成进度条。tqdm库提供了丰富的功能,还可以显示估计剩余时间等信息。

方法三:使用progress库

progress库也是一个用于创建进度条的库,提供不同样式和自定义选项。
示例代码

from progress.bar import Bar
import time# 示例用法
total_steps = 100
bar = Bar('Processing', max=total_steps)for i in range(total_steps):time.sleep(0.1)  # 模拟工作bar.next()       # 更新进度
bar.finish()         # 完成

解释
在这个例子中,我们使用Bar类创建一个进度条,并在每次迭代时调用next()方法来更新进度,最后调用finish()表示完成。

方法四:使用alive-progress库

alive-progress是另一个美观且易用的进度条库,支持动画效果。
示例代码

from alive_progress import alive_bar
import time# 示例用法
total_steps = 100
with alive_bar(total_steps) as bar:for i in range(total_steps):time.sleep(0.1)  # 模拟工作bar()            # 更新进度

解释
在这个例子中,我们使用alive_bar来创建进度条,它可以自动处理刷新和清理,非常方便。

方法五:使用rich库

rich库不仅可以用于创建进度条,还可以为终端输出增加丰富的格式和样式。

示例代码

from rich.progress import Progress
import time# 示例用法
total_steps = 100
with Progress() as progress:task = progress.add_task("Processing...", total=total_steps)for i in range(total_steps):time.sleep(0.1)  # 模拟工作progress.update(task, advance=1)  # 更新进度

解释
在这个例子中,我们创建了一个带有任务的进度条,可以轻松地对进度进行更新。

方法六:自定义图形进度条

如果你想要更具个性化的进度条,可以自己实现一个图形进度条。例如,使用字符或图形符号来表示进度。
示例代码

import time
import sysdef custom_progress_bar(iteration, total, length=40):percent = (iteration / total) * 100filled_length = int(length * iteration // total)bar = '#' * filled_length + '-' * (length - filled_length)sys.stdout.write(f'\r[{bar}] {percent:.2f}%')sys.stdout.flush()# 示例用法
total_steps = 100
for i in range(total_steps + 1):custom_progress_bar(i, total_steps)time.sleep(0.1)print()  # 换行

解释
在这个例子中,我们自定义了一个进度条,使用#符号来表示已完成的部分,-符号表示未完成的部分,最终输出百分比。

总结

通过以上六种方法,你可以灵活地在Python中实现进度条。在实际开发中,可以根据需求选择合适的实现方式,从简单的文本进度条到功能丰富的第三方库,满足不同场景的需求。希望这篇文章能帮助你更好地理解如何实现进度条。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/62059.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

YOLO系列论文综述(从YOLOv1到YOLOv11)【第1篇:概述物体检测算法发展史、YOLO应用领域、评价指标和NMS】

目录 1 前言2 YOLO在不同领域的应用3 物体检测指标和NMS3.1 mAP和IOU3.2 mAP计算流程3.2.1 VOC 数据集3.2.2 微软 COCO 数据集 3.3 NMS 1 前言 最近在做目标检测模型相关的优化,重新看了一些新的论文,发现了几篇写得比较好的YOLO系列论文综述&#xff0…

【通俗理解】步长和学习率在神经网络中是一回事吗?

【通俗理解】步长和学习率在神经网络中是一回事吗? 【核心结论】 步长(Step Size)和学习率(Learning Rate, LR)在神经网络中并不是同一个概念,但它们都关乎模型训练过程中的参数更新。 【通俗解释&#x…

STL之算法概览

目录 算法概览 算法分析与复杂度标识O() STL算法总览 质变算法mutating algorithms----会改变操作对象之值 非质变算法nonmutating algorithms----不改变操作对象之值 STL算法的一般形式 算法的泛化过程 算法概览 算法,问题之解法也。 以有限的步骤&#xff0…

华为IPD流程管理体系L1至L5最佳实践-解读

该文档主要介绍了华为IPD流程管理体系,包括流程体系架构、流程框架实施方法、各业务流程框架示例以及相关案例等内容,旨在帮助企业建立高效、规范的流程管理体系,实现业务的持续优化和发展。具体内容如下: 1. 华为流程体系概述 -…

【青牛科技】 D2822M 双通道音频功率放大电路芯片介绍,用于便携式录音机和收音机作音频功率放大器

概述: D2822M 用于便携式录音机和收音机作音频功率放大器。D2822M 采用 DIP8 和 SOP8 封装形式。 特点:  电源电压降到 1.8V 时仍能正常工作  交越失真小  静态电流小  可作桥式或立体声式功放应用  外围元件少  通道分离度高  开机和关机…

【Python中while循环】

一、深拷贝、浅拷贝 1、需求 1)拷贝原列表产生一个新列表 2)想让两个列表完全独立开(针对改操作,读的操作不改变) 要满足上述的条件,只能使用深拷贝 2、如何拷贝列表 1)直接赋值 # 定义一个…

抖音短视频矩阵源代码部署搭建流程

抖音短视频矩阵源代码部署搭建流程 1. 硬件准备 需确保具备一台性能足够的服务器或云主机。这些硬件设施应当拥有充足的计算和存储能力,以便支持抖音短视频矩阵系统的稳定运行。 2. 操作系统安装 在选定的服务器或云主机上安装适合的操作系统是关键步骤之一。推…

kmeans 最佳聚类个数 | 轮廓系数(越大越好)

轮廓系数越大,表示簇内实例之间紧凑,簇间距离大,这正是聚类的标准概念。 簇内的样本应该尽可能相似。不同簇之间应该尽可能不相似。 目的:鸢尾花数据进行kmeans聚类,最佳聚类个数是多少? plot(iris[,1:4…

day04 企业级Linux安装及远程连接知识实践

1. 使用传统的网卡命名方式 在启动虚拟机时,按tab键进入编辑模式 添加命令: net.ifnames0 biosdevname0 这样linux系统会使用传统的网卡命名,例如eth0、eth1…… 2. 快照 做系统关键操作时,一定要使用快照(先将系统关机) 3.…

STM32C011开发(2)----nBOOT_SEL设置

STM32C011开发----2.nBOOT_SEL设置 概述硬件准备视频教学样品申请源码下载参考程序自举模式BOOT0设置配置 nBOOT_SEL生成STM32CUBEMX串口配置LED配置堆栈设置串口重定向主循环演示 概述 STM32CubeProgrammer (STM32CubeProg) 是一款用于编程STM32产品的全功能多操作系统软件工…

onvif协议相关:3.1.5 Digest方式获取预置位

背景 关于onvif的其实很早之前我已经在专栏中写了不少了, 使用onvif协议操作设备 但最近有陆陆续续的粉丝问我, 希望我在写一些关于 onvif的设备自动发现、预置位跳转、云台操作的博客。 满足粉丝的需求,安排。 今天我们来实现 获取预置位 准备工作 我们这里的话选择Diges…

docker 通过Dockerfile自定义的镜像部署Springboot项目

一、镜像结构介绍: 镜像:层(Layer)添加安装包、依赖、配置等,每一次操作都形成新的一层;基础镜像(BaseImage)应用依赖的系统函数库、环境、配置、文件等;入口&#xff0…

【Canvas与图标】GUI图标

【成图】 120*120的png图标 各种大小图&#xff1a; 【代码】 <!DOCTYPE html> <html lang"utf-8"> <meta http-equiv"Content-Type" content"text/html; charsetutf-8"/> <head><title>GUI图标 Draft1</titl…

CCF GESP C++ 一级上机题(十六道题及其思路详解合集)

#include <iostream> using namespace std;int main() {// 定义起始年份、结束年份、循环变量以及用于累加的变量&#xff0c;并初始化累加变量为0int start, end, i, sum 0;// 从标准输入读取起始年份和结束年份cin >> start >> end;// 循环遍历从起始年份…

Opencv+ROS实现颜色识别应用

目录 一、工具 二、原理 概念 本质 三、实践 添加发布话题 主要代码 四、成果 五、总结 一、工具 opencvros ubuntu18.04 摄像头 二、原理 概念 彩色图像&#xff1a;RGB&#xff08;红&#xff0c;绿&#xff0c;蓝&#xff09; HSV图像&#xff1a;H&#xff0…

scala模式匹配

object test47 {def main(args: Array[String]): Unit {val id"445646546548858548648"//取出id前两位val provinceid.substring(0,2) // println(province) // if (province"42"){ // println("湖北") // }else if(province&quo…

AI加持,华为全屋智能品牌升级为“鸿蒙智家”

1.传统智能家居的困境&#xff1a;从便利到繁琐 近年来&#xff0c;智能家居因其便捷性和科技感受到消费者的青睐。然而&#xff0c;随着用户需求的多样化&#xff0c;传统智能家居的弊端逐渐显现&#xff1a; 设备连接复杂&#xff0c;品牌间兼容性不足&#xff0c;用户不得不…

string类部分(C++)

目录 1. string类 1.1 auto和范围for auto关键词&#xff1a; 范围for&#xff1a; 1.2 string类的常用接口说明 a&#xff09;string类对象的常见构造 b&#xff09; string类对象的容量操作 size与length&#xff1a; capacity: empty: clear: reserve: 1.reserve&am…

大厂也在用的分布式链路追踪:TraceIdFilter + MDC + Skywalking

痛点 查线上日志时&#xff0c;同一个 Pod 内多线程日志交错&#xff0c;很难追踪每个请求对应的日志信息。 日志收集工具将多个 Pod 的日志收集到同一个数据库中后&#xff0c;情况就更加混乱不堪了。 解决 TraceId MDC 前端每次请求时&#xff0c;添加 X-App-Trace-Id 请…

Dashboard Tactics

1&#xff1a;相关链接Dashboard Tactics :: OpenCPN Dashboard Tactics Plugin rgleason/dashboard_tactics_pi: OpenCPN dashboard built-in plugin merger with external tactics_pi plugin NMEAconverter :: OpenCPN 2&#xff1a;显示样式 3&#xff1a;代码 这个插件…