最近在写一个脚本,希望在time.sleep()
的时候每秒钟有一次打印输出,经过尝试,有两种方法可以实现:
每秒打印一个小数点
import sys
import time
for i in range(1,10):
time.sleep(1)
print('.',end='')
sys.stdout.flush()
在输出不换行的情况下,如果没有
sys.stdout.flush()
,python会在循环结束之后才一次性打印所有的点,和我们的目标背道而驰,所以需要每次打印一个小数点就立刻释放缓冲区。如果每次换行(即不要end=''
),那么系统会自动释放缓冲区。
直接显示倒计时
import time
def countdown(t):
for i in range(t):
print("\r%d " % (t-i), end='')
time.sleep(1)
注意
%d
之后需要加一个空格,否则数字从高位变低位的时候,会导致数字残留。