在Python的IDLE中输入运行一段文本进度条,会发现使用\r光标不起作用,后一次输出无法覆盖前一次的输出,而是会将全部输出列出。
在IDLE中运行的代码如下:
#TextProBarV3.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,'-'))
这里对于print上的'\r'光标放行首不起作用,这是因为IDL主要是被设定为开发环境而不是程序的运行环境,'\r'被屏蔽。
解决方案是通过双击或者控制台运行此程序,便能展示光标放行首刷新覆盖的效果。