打印后清除输出

Clearing an output after it's printed

有没有办法在打印后清除输出,例如,如果我们为倒计时编写代码,打印的值会立即被清除,而另一个值会打印在与前一个输出相同的位置。

import time
a = [5,4,3,2,1,0]
for i in a:
    time.sleep(0.2)
    print(i,end="",)

此处输出打印在同一行,但有没有办法清除输出以在与前一个输出相同的位置打印下一个值,就像在加载屏幕或倒计时中一样(如 'cls' 在命令提示符下,但作为一个进程,而程序仍然是 运行).

非常感谢您的帮助。

刷新输出并打印回车 return 字符以将光标置于行首:

import time
a = [5,4,3,2,1,0]
print()    # start on a new line
for i in a:
    time.sleep(0.2)
    print(i, end="\r", flush=True)
print()

请注意,这不会清除该行,因此您可能也想这样做:

for i in [500] + a:
    time.sleep(0.2)
    print('3[K', i, sep='', end="\r", flush=True)

其中 3[KANSI escape sequence 清除行。

像这样。使用 \r 作为 print() 调用的结束参数。

import time
for x in range(5, -1, -1):
    print(f'3[KCounting down {x}', end='\r')
    time.sleep(1)
print()

最后一个 print() 是将光标移动到下一行,否则 shell 将覆盖最后一行,\033[K 是清除该行的 ANSI 转义序列。