Python的print函数实现进度条效果的覆盖输出的操作

版权声明:转载请注明作者(独孤尚良dugushangliang)出处:https://blog.csdn.net/dugushangliang/article/details/103032555

 

一直以来,羡慕那种在shell窗口执行操作时候同行覆盖输出的进度条那种操作,比如完成状态是10个*,那么在执行操作时候,会始终输出一行,在这一行慢慢地由1个星号到10个星号的动态变化。可惜,不知道怎么操作,只好暂定为输出10行。

无意发现了这种操作:

import time
for i in range(10):
 print(i,end='\r')
 time.sleep(1)

关键在于end=‘\r’,但这个需要配合sleep使用,不然你看不到东西。

所以下图这种许多行的状态显示输出就可以say bye了。取而代之的,是一个不断变长的进度条。

引申:如果不修改已经打印的内容,比如不是在同一个位置更新时间或百分比的数值的情况下,如果只是输出一个个的*号,还有其他方法么?设想代码如下:

import time
for i in range(1,10):
 print('*',end='')
 time.sleep(1)

 每隔一秒我追加打印一个*可以吗?

很遗憾,上面的代码,是起初一直不显示,到最后全部显示出来。

为什么这样呢?我猜测可能是print这个函数的问题,如果end不是默认的'\n'或者我没设置的'\r'这类,print函数可能是攒一波再输出,所以无论end是''还是'\t',' '这种,都是最后一次性输出。

2019年11月17日,有高人(飞龟道人/尘空和尚:https://me.csdn.net/weixin_40450867)发展了下代码:

import time
for i in range(1,20):
    print("█" * i + "%*.*s" %(42-2*i,5,int(i * 100 / 19)) + "%", end='\r')
    time.sleep(1)
print("\n")

这是有进度条和百分比动态更新的。如下图所示:

飞龟道人/尘空和尚的经验:如果不在cmd,软件编辑器直接运行的话,下图这里可以显示。

(注意:提供思路,要学会举一反三,此类代码我是在cmd运行Python所得,经实践检验,pycharm执行看不到效果。)

感谢飞龟道人/尘空和尚的完善发展。

 

独孤尚良dugushangliang——著

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值