[python]实现文本进度条(代码片段)

程序喵正在路上 程序喵正在路上     2023-03-23     481

关键词:

目录

简单的开始

进度条是计算机处理任务或执行软件中常用的增强用户体验的重要手段,它能度条功能。今天我们将利用 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 = '**' * i
    b = ' . . ' * (scale - 1)
    c = (i / scale) * 100
    print("%:^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 time

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

运行结果如下:


这次的分享就到这里啦,继续加油哦^^

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

第七章文本进度条的实现(代码片段)

文本进度条大家都见过程加载的时候的文本进度条进度条的原理是什么呢?1、采用字符串方式打印可以动态变化的文本进度条2、进度条需要能在一行中逐渐变化问题分析:如何获取一个文本进度条的变化时间呢?1、采用sleep()... 查看详情

python使用tqdm实现程序运行进度条(代码片段)

python使用tqdm实现程序进度条tqdm源自阿拉伯语单词taqaddum()意思是“进步”,是西班牙语中“我非常爱你”的缩写。tqdmderivesfromtheArabicwordtaqaddum()whichcanmean“progress,”andisanabbreviationfor“Iloveyousomuch”inSpanish(tequierodemasiado) 查看详情

unity简单的进度条实现(代码片段)

制作进度条所需的资源:用以载入进度条显示的场景进度条背景以及进度条本身(颜色区别)展示百分制进度情况的Text文本需要载入的场景(这里使用的是自带场景)载入时的场景布局:要将Load的ImageType修改为Filled,FillMethod修... 查看详情

python之小小的进度条(代码片段)

需要用到的模块是:system和time importsys#sys.stdout.write()stdout是标准输出(输出到屏幕)importsys,timeforiinrange(20):sys.stdout.write(">")sys.stdout.flush()#实时刷新到屏幕上,进度条实现。如果此行注释,则屏幕延迟一会后‘>‘字符全... 查看详情

太好玩了,6种python实现实时显示进度条(代码片段)

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

python进度条tqdm的用法(代码片段)

Python进度条tqdm详细介绍前言1.用tqdm子模块2.用trange子模块,效果和用tqdm子模块一样3.手动设置处理进度前言有时候在使用Python处理比较耗时操作的时候,为了便于观察处理进度,这时候就需要通过进度条将处理情况进... 查看详情

文本进度条(代码片段)

#用sleep()模拟importtimescale=10print("----执行开始-----")foriinrange(scale+1):a=‘*‘*ib=‘.‘*(scale-i)c=(i/scale)*100print(":^3.f%[->]".format(c,a,b))time.sleep(0.1)print("----执行结束-----")单行动态刷新不能换行用后 查看详情

python超方便的迭代进度条(tqdm)(代码片段)

Tqdm是一个智能进度表。它能够显示所有可迭代对象当前执行的进度。你只需要用tqdm对可迭代对象进行封装后再遍历即可实现进度条功能,比如说:fromtqdmimporttqdmforiintqdm(range(10000)):...显示效果如下:76%|██████... 查看详情

python进度条(代码片段)

查看详情

python进度条(代码片段)

查看详情

python打印进度条。(代码片段)

查看详情

python进度条(tqdm)(代码片段)

查看详情

pythongui编程:音乐播放器(多线程爬虫进度条文件)(代码片段)

...序实现原理3.GUI布局4.功能介绍5.代码实现1.程序运行结果Python实现音乐播放器(爬虫、多线程、进度条、文件)2.程序实现原理本音乐播放器GUI方面运用Python的tkinter实现,播放的音乐来自网络爬虫和本电脑已经有的。为了使整个... 查看详情

瞬间高逼格!这6种python进度条真的绝了!(代码片段)

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

wpf实现圆形进度条(代码片段)

 WPF实现圆形进度条控件名:CircularProgressBar作 者:WPFDevelopersOrg-驚鏵原文链接[1]:https://github.com/WPFDevelopersOrg/WPFDevelopers框架使用.NET40;VisualStudio2019;CircularProgressBar继承ProgressB 查看详情

echarts实现环形进度条(代码片段)

效果图实现代码可直接复制运行:<!DOCTYPEhtml><html> <head> <metacharset="UTF-8"> <title>环形进度条</title> <scriptsrc="https://cdn.staticfile.org/echart 查看详情

python执行期间打印进度条(代码片段)

查看详情

python蟒蛇下载大型文件显示进度条(代码片段)

查看详情