如何从 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 函数默认以换行符结尾。要将光标保持在您打印的行的末尾,您应该在 end 函数中使用 print 参数:

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

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

下一步,您可以使用您在另一个question中提到的write = sys.stdout.write,并且为了避免打印备用字符时出现任何问题,您可以确保使用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 = '' 就没有问题了。