用python实现进度条

embedded/2025/2/6 7:44:56/

前言

在Python中,可以使用多种方式实现进度条。以下是几种常见的进度条格式的实现方法:

1. 使用 tqdm

tqdm 是一个非常流行的库,可以轻松地在循环中显示进度条。

python">from tqdm import tqdm
import time# 示例:简单的进度条
for i in tqdm(range(100)):time.sleep(0.1)  # 模拟任务执行时间

在这里插入图片描述

2. 使用 rich

rich 是一个功能强大的库,可以创建丰富的终端输出,包括进度条。

python">from rich.progress import track
import time# 示例:简单的进度条
for _ in track(range(100)):time.sleep(0.1)  # 模拟任务执行时间

在这里插入图片描述

3. 使用 progressbar2

progressbar2 是另一个用于创建进度条的库,提供了多种进度条样式。

python">import progressbar
import time# 示例:简单的进度条
bar = progressbar.ProgressBar(max_value=100)
for i in range(100):time.sleep(0.1)  # 模拟任务执行时间bar.update(i + 1)

4. 使用 alive-progress

alive-progress 是一个动态的进度条库,提供了多种动画效果。

python">from alive_progress import alive_bar
import time# 示例:动态进度条
with alive_bar(100) as bar:for i in range(100):time.sleep(0.1)  # 模拟任务执行时间bar()

5. 自定义进度条

如果你不想使用第三方库,也可以自己实现一个简单的进度条。

python">import sys
import timedef progress_bar(current, total, bar_length=50):fraction = current / totalarrow = int(fraction * bar_length - 1) * '=' + '>'padding = (bar_length - len(arrow)) * ' 'sys.stdout.write(f'\rProgress: [{arrow}{padding}] {int(fraction*100)}%')sys.stdout.flush()# 示例:自定义进度条
for i in range(100):time.sleep(0.1)  # 模拟任务执行时间progress_bar(i + 1, 100)

在这里插入图片描述

6. 使用 click

click 是一个命令行工具库,也提供了进度条功能。

python">import click
import time# 示例:简单的进度条
with click.progressbar(range(100)) as bar:for i in bar:time.sleep(0.1)  # 模拟任务执行时间

7. 使用 PySimpleGUI 创建图形化进度条

如果你想要一个图形化的进度条,可以使用 PySimpleGUI

python">import PySimpleGUI as sg
import time# 示例:图形化进度条
layout = [[sg.Text('任务进度')],[sg.ProgressBar(100, orientation='h', size=(20, 20), key='progressbar')],[sg.Cancel()]]window = sg.Window('进度条示例', layout)
progress_bar = window['progressbar']for i in range(100):event, values = window.read(timeout=10)if event == 'Cancel' or event == sg.WIN_CLOSED:breakprogress_bar.UpdateBar(i + 1)time.sleep(0.1)  # 模拟任务执行时间window.close()

在这里插入图片描述

总结

以上是几种常见的进度条实现方式,每种方式都有其独特的风格和适用场景。你可以根据需求选择合适的库或方法来实现进度条。


http://www.ppmy.cn/embedded/159969.html

相关文章

“数智”赋能城市运行管理

在数字化浪潮的推动下,城市运行管理正经历着前所未有的变革。“数智”赋能,即通过大数据、人工智能、云计算等前沿技术,为城市治理注入新的活力,实现城市管理的智能化、精细化和高效化。本文将深入探讨“数智”赋能城市运行管理的…

[创业之路-282]:《产品开发管理-方法.流程.工具 》-1- 优秀研发体系的特征、IPD关注的4个关键要素、IPD体系的7个特点

目录 一、优秀研发体系的特征 二、IPD关注的4个关键要素 1. 组织管理 2. 市场管理 3. 流程管理 4. 产品管理 三、IPD体系的7个特点 1、产品开发是投资行为: 2、基于市场的产品研发: 3、平台化开发,大平台,小产品&#x…

计算机网络笔记再战——理解几个经典的协议6——TCP与UDP

目录 先说端口号 TCP 使用序号保证顺序性和应答来保证有效性 超时重传机制 TCP窗口机制 UDP 路由协议 协议分类:IGP和EGP 几个经典的路由算法 RIP OSPF 链路状态数据库(LSDB) LSA(Link State Advertisement&#xff0…

线性回归简介:从理论到应用

什么是线性回归? 线性回归是一种用于预测数值型结果的统计方法,它通过建立一个或多个自变量(输入特征)与因变量(输出目标)之间的线性关系模型来工作。在最简单的形式中,即简单线性回归&#xf…

如何利用i18n实现国际化

1.首先新建i18.js文件 // i18n配置 import { createI18n } from vue-i18n // import ElementPlus from element-plus import zhCn from element-plus/es/locale/lang/zh-cn import zh from ./zh-cn import en from ./en import ru from ./ru const messages {en_US: {...en,//…

糖果(安师大)

转移方程 转移方程的核心思想是 选择和不选择当前物品 两种情况的比较。具体来说: 不选择当前物品: 如果不选择第 i 个物品,那么 dp(i, j) 就等于 dp(i-1, j),即前 i-1 个物品中,满足 总价值 % k j 的最大和。 选…

【异常记录Java-20250204】调用讯飞星火AI(Spark lite 版本)Api 授权错误问题处理

问题重现 依赖 <!--讯飞开放平台sdk--> <dependency><groupId>io.github.briqt</groupId><artifactId>xunfei-spark4j</artifactId><version>1.3.0</version> </dependency>yml配置文件 # 讯飞Api配置 xunfei:client:ap…

Vue和Java使用AES加密传输

背景&#xff1a;Vue对参数进行加密&#xff0c;对响应进行解密。Java对参数进行解密&#xff0c;对响应进行解密。不拦截文件上传类请求、GET请求。 【1】前端配置 安装crypto npm install crypto-js编写加解密工具类encrypt.js import CryptoJS from crypto-jsconst KEY …