我正在尝试创建一个计数器,该计数器以每秒100,000的增量从1,000,000滴答到0,并将其显示在一行上,每秒更新一次。
但是,下面的代码在末尾打印了一个额外的零:
counter = 1000000
while counter > 0:
sys.stdout.write("%s\r" % counter)
sys.stdout.flush()
counter -= 100000
time.sleep(1)
我得到了输出(每个输出都写在上一行):
1000000
9000000
8000000
7000000
6000000
...
脚本在末尾正确停止。当我将\r
替换为\n
时,它可以正确打印数字,但是显然我希望它刷新而不是每次都创建新行。
答案 0 :(得分:2)
第一行末尾是一个字符,作为一种解决方法,您可以手动覆盖它:
while counter > 0:
sys.stdout.write(str(counter).ljust(7) + "\r")
counter -= 100000
time.sleep(1)