Python实现单行刷新文本进度条与动态加载效果

听雨眠
听雨眠
发布时间:2026-10-13 | 5人浏览过
原创

本文详细介绍如何利用Python的time库实现单行刷新的文本进度条。通过解析\r转义字符实现光标回退覆盖,解决默认换行导致的显示混乱问题,并提供完整代码示例与动态时间统计功能,帮助开发者直观展示程序执行进度。

Python单行刷新进度条实现原理

本文将演示如何使用Python实现文本进度条、程序进度条及加载进度条的单行刷新功能,具体实现细节如下。

主要思路是利用time库模拟程序的执行过程,以此作为实例进行演示。

核心逻辑在于简单地打印出程序的当前进度状态。

实现单行刷新的关键在于使用\r转义字符。

Python默认的print函数会在输出后自动换行,因此添加\r可以使光标回退到当前行的起始位置,从而覆盖之前的输出内容。


import time
tm=10
print('{:-^18}'.format('开始'))
for i in range(tm+1):
  a='#'*i
  b='.'*(tm-i)
  c=(i/tm)*100
  print('\r{:^3.0f}%[{}->{}]'.format(c,a,b),end="")#记得要光标回退,这是python3的打法,python2的把最后的end=‘'改了就好
  time.sleep(0.1)#这是模拟程序进程,可将time.sleep替换成程序进程
print('{:-^18}'.format('结束'))

如果不使用\r,效果将如所示,每一行进度都会独立显示,导致界面杂乱。


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

加入\r后的最终视觉效果如所示,进度条在同一行内动态更新。

--------开始-------- 100%[##########->]--------结束--------

由于最后一步输出中“结束”标签与进度条末尾重叠,因此需要额外添加一个换行符来优化显示,最后一行代码应修改为。

print('\n'+'{:-^18}'.format('结束'))

接下来,我们将进一步探讨如何使用Python实现单行动态刷新的文本进度条。

相关代码文件名为TextProBar.py。

动态时间统计进度条代码示例


import time
scale = 50
print("执行开始".center(scale // 2,"-"))
start = time.perf_counter()
for i in range(scale + 1):
  a = "*" * i
  b = "." * (scale - i)
  c = (i / scale) * 100
  dur = time.perf_counter() - start
  print("\r{:^3.0f}%[{}->{}]{:.2f}s".format(c,a,b,dur),end = "")
  time.sleep(0.1)
print("\n"+"执行结束".center(scale // 2,"-"))

\r转义字符的作用是使打印后的光标退回到之前的位置以覆盖旧字符,但在IDLE环境中该效果会被屏蔽。因此,建议使用命令行执行。需要注意的是,IDLE作为开发环境,为了保证参数运行效果的稳定性,屏蔽了部分显示特性;而正常运行程序通常通过双击文件或控制台进行,较少直接通过IDLE运行。

本文对上述Python实现文本进度条、程序进度条、加载进度条及单行刷新功能进行了总结。

希望以上内容能对大家有所帮助。如有任何疑问,欢迎留言,小编会及时回复。感谢大家对本站的支持!如果您觉得本文对您有帮助,欢迎转载,请注明出处,谢谢!

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表