正如标题所说,我想在python中创建一个实时倒数计时器
到目前为止,我已尝试过这个
import time
def countdown(t):
print('Countdown : {}s'.format(t))
time.sleep(t)
但是,这让应用程序可以睡觉。秒,但行中的秒数不会自行更新
countdown(10)
期望的输出:
Duration : 10s
1秒后,它应该是
Duration : 9s
是的,问题是我必须删除的前一行Duration : 10s
。有没有办法做到这一点?
答案 0 :(得分:1)
只需这样做:
import time
import sys
def countdown(t):
while t > 0:
sys.stdout.write('\rDuration : {}s'.format(t))
t -= 1
sys.stdout.flush()
time.sleep(1)
countdown(10)
导入sys
并在打印下一个输出之前使用sys.stdout.write
而不是print和flush()输出。
注意:在字符串前面使用回车符“\ n”,而不是添加换行符。
答案 1 :(得分:0)
我从这个帖子得到了很多帮助:remove last STDOUT line in Python
import time
def countdown(t):
real = t
while t > 0:
CURSOR_UP = '\033[F'
ERASE_LINE = '\033[K'
if t == real:
print(ERASE_LINE + 'Duration : {}s'.format(t))
else:
print(CURSOR_UP + ERASE_LINE + 'Duration : {}s'.format(t))
time.sleep(1)
t -= 1
countdown(4)