Python 如何从终端删除字符或行?

How to delete character or line from terminal in Python?

我想从 Python.

中的终端删除字符或行

例如,我使用 print("Hello World") 打印了“Hello World”。然后我使用 time.sleep(3) 等待 3 秒。然后我想在终端中删除一个字符,所以终端将是 Hello Worl.

所以,我想要的结果是:

  1. 当我启动我的程序时,Hello World 打印。
  2. 程序休眠 3 秒。
  3. 然后终端中的文本变为 Hello Worl

此外,我从 SOwrite = sys.stdout.writewrite("\b") 中找到了一些解决方案,但这会打印 <0x08>.

有没有办法在终端中删除字符或行?

我正在使用 Python 3.8 和 Windows 10。谢谢!

您可以使用 end='\r' 作为您的打印语句来完成此操作。 \r 使光标​​停留在同一行,所以你可以覆盖它。

from time import sleep

print("Hello world", end='\r')
sleep(3)
print("Hello worl ")

您应该注意 print 函数默认以换行符结尾。要将光标保持在您打印的行的末尾,您应该在 print 函数中使用 end 参数:

print("Hello World", end="", flush=True)    # Edited

使用end = ''的原因是为了让打印函数结束时没有新字符,而不是使用默认的换行符。

对于下一步,您可以使用write = sys.stdout.write,就像您在另一个question中提到的那样,并且为了避免在打印多余字符时出现任何问题,您可以确保使用write("\b \b").

完整的代码可以这样写:

import sys, time 

print("Hello World", end="")

time.sleep(3)
write = sys.stdout.write
write('\b \b')

您也可以使用 sys.stdout.write 而不是 print 函数。据我所知,这两者之间的主要区别之一是 print 默认情况下强制您从一个新行开始。但是,使用上述解决方案并使用 end = '' 就没有问题了。