[Python] 实现文本进度条

article/2025/10/28 18:39:43

目录

  • 简单的开始
  • 单行动态刷新
  • 带刷新的文本进度条

简单的开始

进度条是计算机处理任务或执行软件中常用的增强用户体验的重要手段,它能度条功能。今天我们将利用 Python 字符串处理方法实现文本进度条功能。

最简单地,利用 print() 函数实现简单的非刷新文本进度条。基本思想是按照任务执行百分比将整个任务划分为 100 个单位,每执行 N% 输出一次进度条。 每一行输出包含进度百分比,代表已完成的部分(**) 和未完成的部分(…)的两种字符,以及一个跟随完成度前进的小箭头,风格如下:

%10 [***** -> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .]

由于程序执行速度远超过人眼的视觉停留时间,直接进行字符输出几乎是瞬间完成,不利于观察。为了模拟任务处理的时间效果,调用 Python 标准时间库 time,使用 **time sleep()**函数将当前程序暂时挂起 t s, t 可以是小数。由此可以接近真实的模拟进度条效果输出。使用 import 保留字调用 time 库。

import time

默认情况,print() 函数在输出结尾处会自动产生一个 ‘\n’, 即换行符,从而让光标自动移动到下一行行首,这样上一步输出依旧保存在界面上。

采用 for 循环和 print() 函数构成程序的主体部分,输出百分比最高(100%)为 3 位数据,为了使输出显得整齐,可以使用 {:^3.0f} 格式化百分比部分。这个简单的文本进度条代码如下。变量 scale 表示输出进度条的精度,我们可以修改这个值观察效果变化。

import time
scale = 10
print("------执行开始------")
for i in range(scale+1):a = '**' * ib = ' . . ' * (scale - 1)c = (i / scale) * 100print("%{:^3.0f}[{} -> {}]".format(c,a,b))time.sleep(0.1)
print("------执行结束------")

运行结果如下:

在这里插入图片描述

------执行开始------
% 0 [ -> . . . . . . . . . . . . . . . . . . ]
%10 [** -> . . . . . . . . . . . . . . . . . . ]
%20 [**** -> . . . . . . . . . . . . . . . . . . ]
%30 [****** -> . . . . . . . . . . . . . . . . . . ]
%40 [******** -> . . . . . . . . . . . . . . . . . . ]
%50 [********** -> . . . . . . . . . . . . . . . . . . ]
%60 [************ -> . . . . . . . . . . . . . . . . . . ]
%70 [************** -> . . . . . . . . . . . . . . . . . . ]
%80 [**************** -> . . . . . . . . . . . . . . . . . . ]
%90 [****************** -> . . . . . . . . . . . . . . . . . . ]
%100[******************** -> . . . . . . . . . . . . . . . . . . ]
------执行结束------

单行动态刷新

常用的计算机系统中都有进度条,这些进度条般只在一行中改变进度比例,与前面的代码相比,区别在于原地输出和动态刷新,其基本思想是将每次进度输出都固定在同一行,并不断地用新生成的字符串覆盖之前的输出,形成进度条不断刷新的动态效果。这种效果称为“单行动态刷新”,可以通过 print() 函数实现。

采用 print() 函数的具体方法是,在 print() 函数中更换参数 end 的默认值为’ ',即每次使用 print() 函数输出时不换行。此时,系统输出指针还停留在上一次输出的行尾,下一次输出在字符串前部增加转义符 ‘\r’,该转义符把输出指针移动到行首而不换行。动态刷新一个百分比的完整代码如下:

import time
for i in range(101):print("\r{:3}%".format(i),end=' ')time.sleep(0.05)

运行结果如下:

带刷新的文本进度条

将前两小节的程序合并,再添加开始和结束提示语,可以很好地实现带刷新的文本进度条。为了进一步提高用户体验,在文本进度条中增加运行时间的监控,这里采用 time 库中的 time.perf_counter() 函数。time.perf_counter() 函数一 般多次出现, 第一次调用时计时开始,同一程序中第二次及后续调用时返回与第一次计时之间的时间差, 单位为微秒。该函数主要用来统计程序运行时间,增加用户体验。文本进度条完整代冯如下:

import timescale = 50
print("执行开始".center(scale // 2, '-'))
t = time.perf_counter()                     # 单位为微秒
for i in range(scale + 1):a = '*' * ib = '.' * (scale - i)c = (i / scale) * 100t -= time.perf_counter()print("\r{:^3.0f}% [{} -> {}] {:.2f}s".format(c, a, b, -t/1000000), end=' ')time.sleep(0.05)
print("\n" + "执行结束".center(scale // 2, '-'))

运行结果如下:

在这里插入图片描述
这次的分享就到这里啦,继续加油哦^^

有出错的地方欢迎在评论区指出来,共同进步,谢谢


http://chatgpt.dhexx.cn/article/a3FB5jcr.shtml

相关文章

太好玩了!6种Python实现【实时】显示进度条!

相信大家对进度条一定不陌生了,比如在我们安装python库的时候可以看到下载的进度,此外在下载文件时也可以看到类似的进度条,比如下图这种: 应用场景:下载文件、任务计时等 今天辰哥就给大家分享Python的6种不同的实现实…

Python实现进度条的5种方式

Python实现显示进度条_python 显示进度条_TaoismHuang的博客-CSDN博客文章目录1. 普通进度条2.1. 普通进度条利用打印功能print进行实时刷新显示import sysimport timefor i in range(1, 101): """ 任务代码 """ print("\r", end"…

【爬虫系列】Python如何实现进度条效果?

一、需求 在爬取数据过程中,发现不看输出日志是不知道当前的爬取进度,而单纯靠控制台输出日志信息也不方便判断。因此,就想办法给爬取过程加个进度条,实时展示当前的爬取进度。 有了这个需求和想法之后,那如何实现呢…

Python 实现进度条的六种方式

一、普通进度条 示例代码 import sys import timedef progress_bar():for i in range(1, 101):print("\r", end"")print("Download progress: {}%: ".format(i), "▋" * (i // 2), end"")sys.stdout.flush()time.sleep(0.…

svn -- 客户端+服务端的下载安装及配置

通用管理后台推荐 (兮家 plus) 【兮家 plus】, 主要应用于中小型项目的快速开发,已经历历时3年的优化改进,具备完善的基础功能以及代码生成,并且拥有完善的分布式解决方案:如分布式缓存,分布式锁,分布式唯…

SVN的下载安装及配置环境变量

文章目录 简介使用SVN特点特性工作原理 安装1、安装subversion服务器端2、创建SVN资源库目录3、生成SVN资源目录4、开启3690端口5、使用命令svnserve启动服务6、用户密码passwd配置1、文件都在svn的conf/目录下2、修改passwd3、权限控制authz配置 7、修改svnserve.conf配置选项…

SVN注册下载安装以及使用一气呵成

本博客根据SVNbucket官方视频学习制作的,这里记录本人操作的记录 视频链接: https://www.bilibili.com/video/BV1k4411m7mP?vd_sourcea4c65e14d1ff11ea858cadc164fbb59e 一 .SVN的介绍 1.SVN是什么 查阅资料可以知道 ,这是一个开放源代码的版本控制系统,管理着随时间改变的…

Windows下的subversion(SVN)下载安装及配置 -详细步骤

一、安装: 1.下载网址[http://subversion.apache.org/ 2.选择Windows系统下的VisualSVN二进制安装文件 3.选择VisualSVN Server下,相应的版本 4.下载完成后,直接点击安装 5,一直下一步,到 下一步,知…

SVN的下载与安装

看到这篇博客的应该就知道SVN是什么——版本控制系统。具体高深的暂时还知道的不多,我也是才接触,在这里分享一下,也算帮自己记录一下。 SVN大概分两部分,一部分下个安装包,装在电脑上;另一部分&#xff0…

svn和TortoiseSVN下载安装步骤【非常详细】

1 安装Apache Subversion 由于Apache Subversion 项目不正式认可或维护 Subversion 软件的任何二进制包。 我们可以通过官网推荐的其他平台下载二进制包 地址 https://subversion.apache.org/packages.html 点击 VisualSVN 支持和维护(选这个是因为不需要注册&…

svn下载和安装

一、svn简介 SVN全称Subversion,是一款优秀的版本控制工具。 SVN分为服务器、客户端两部分,一般以VisualSVN作为服务器,以TortoiseSVN作为客户端。 SVN 核心概念: repository(源代码库):源代码统一存放…

项目管理工具-SVN(SubVersion)下载安装/基本详细具体使用步骤

目录 前言 SVN简介: 1.什么是SVN? 2.下载服务端 Apache Subversion Binary Packages 进入网址后,滚动到浏览器最底部看到如下截图 下载TortoiseSvn--​编辑 3.下载地址客户端 https://tortoisesvn.net/downloads.html 4.检验客…

SVN下载安装及入门使用教程,详细到不能再详细了

为什么要使用SVN? 程序员在编写程序的过程中,每个程序员都会生成很多不同的版本,这就需要程序员有效的管理代码,在需要的时候可以迅速,准确取出相应的版本。 SVN是什么? 它是一个自由/开源的版本控制系统…

2.SVN下载及其安装配置

目录 1. SVN简介 2. SVN下载及其安装配置 3. SVN服务器与客户端基本使用 4. Eclipse中使用SVN 5. SVN冲突解决 6. IDEA中使用SVN SVN下载及其安装配置 目录安装SVN前需知下载SVN服务器1.进入官网2.点击version history历史版本3.选择4.2.0版本 --> 选择64位点击下载4.进…

SVN客户端(Windows)——Tortoise SVN(中文版 )的下载及安装

SVN客户端(Windows)——Tortoise SVN(中文版 )的下载及安装 主要介绍 Tortoise SVN 的下载、安装及如何设置为中文 Tortoise SVN 及中文安装包下载 官网下载:Tortoise SVN 123云盘下载:Tortoise SVN 及…

SVN下载与安装

1、下载地址 Downloads TortoiseSVN 这里提供一个官网的1.14.3版本。 安装包 链接:https://pan.baidu.com/s/1ZAGv5FeVLM6n3GRb4WAtvw?pwd9izl 提取码:9izl 中文语言包 链接:https://pan.baidu.com/s/1A1wILNaQu5sYAffSLl1usg?pwdll…

SVN 下载与安装(超简单)!!!

一 SVN 是什么? 在公司做过团队开发都知道,一个项目的代码要保持最新的版本。 举个例子! 例如:一个公司的项目有5人开发(A,B,C,D,E五个人),有一…

SVN学习:SVN的下载安装

一、SVN的安装 1、下载SVN安装包 首先在本地电脑上安装SVN服务器与客户端,安装包可以去官网下载或者从我的百度网盘中直接提取。两个 获取方法的链接地址如下所示: 1、官网地址:SVN服务器下载地址:https://www.visualsvn.com/ser…

Hibernate - Java 类型, Hibernate 映射类型及 SQL 类型之间的对应关系

【1】常见的映射关系表 常见的映射对应关系如下表所示: Hibernate映射类型Java类型标准SQL类型字节大小integer/intjava.lang.Integer/intINTEGER4Bytelongjava.lang.Long/longBIGINT8Byteshortjava.lang.Short/shortSMALLINT2Bytebytejava.lang.Byte/byteTINYINT…

MySQL字段类型到JAVA类型的对应及转换

1. 概述 在使用Java JDBC时,你是否有过这样的疑问:MySQL里的数据类型到底该选择哪种Java类型与之对应?本篇将为你揭开这个答案。 2. 类型映射 java.sql.Types定义了常用数据库(MySQL、Oracle、DB2等)所用到的数据类型,官名也叫JDB…