飘逸的python - 实现控制台进度条效果

时间:2022-09-11 18:46:20

我们要怎么在同一行中刷新输出呢?

答案是回车

注意,回车跟换行不是同一个东西。

回车:将当前光标移动到行首。(\r, return, CR, Carriage Return)
换行:光标位置不变,换到下一行。(\n, newline, LF, Line Feed)


以前的存储器很贵,有的人觉得每行结尾加2个字符太浪费了,加一个就行。于是导致了各个系统下表达回车换行所用符号略有不同。具体不在本文展开。

下面代码是针对windows平台而言的。

#coding=utf-8
import time
fmt = '{:3d} [{:<20}]'.format
def progressbar():
for n in range(21):
time.sleep(0.1)
print '\r',fmt(n*5, '='*n),

progressbar()
print