Python文本进度条

进度条是计算机处理任务或执行软件中常用的增强用户体验的重要手段,它能够实时显示任务或软件的执行进度。

  1. 非刷新文本进度条
#非刷新的文本进度条
import time
scale = 10
print("------执行开始------")
for i in range(scale+1):
    a,b="**"*i,".."*(scale-i)
    c=(i/scale)*100
    print("%{:^3.0f}[{}->{}]".format(c,a,b))
    time.sleep(0.1)
print("------执行结束------")

关于time.sleep(t),由于程序执行速度远超过人眼的视觉停留时间,直接进行字符输出几乎是瞬间完成,不利于观察。为了模拟任务处理的时间效果,调用Python标准时间库time,使用time.sleep(t)函数将当前程序暂时挂起t s。
上述程序执行结果:
在这里插入图片描述

  1. 单行动态刷新
#单行动态刷新
import time
for i in range(101):
    print("\r{:2}%".format(i),end='')
    time.sleep(0.05)
    

常用的计算机系统中的进度条一般只在一行中改变进度比例,与1.代码相比,区别在于原地输出和动态刷新,其基本思想是将每一次进度输出都固定在一行,并不断地用新生成的字符串覆盖之前的输出,形成进度条不断刷新的动态效果。
在print()函数中更换参数end的默认值为‘’,即每次使用print()函数输出时不换行。此时,系统输出指针还停留在上一次输出的行尾,在输出的字符串前部增加转义符‘\r’,该转义符把输出指针移动到行首而不换行。
上述程序在IDLE中输出的结果为:
在这里插入图片描述
这里没有获得动态刷新的效果,是因为IDLE本身屏蔽了当行刷新功能。
下面看命令行输出:
在这里插入图片描述

  1. 带刷新的文本进度条
#带刷新的文本进度条
import time
scale=50
print("执行开始".center(scale//2,'-'))
t=time.clock()
for i in range(scale+1):
    a='*'*i
    b='.'*(scale-i)
    c=(i/scale)*100
    t-=time.clock()
    print("\r{:^3.0f}%[{}->{}]{:.2f}s".format(c,a,b,-t),end='')
    time.sleep(0.05)
print("\n"+"执行结束".center(scale//2,'-'))

上述代码在命令行中的执行结果:
在这里插入图片描述

  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值