如何解决如何从 Python 中的终端删除字符或行?
我想从 Python 终端中删除字符或行。
例如,我使用 print("Hello World")
打印了“Hello World”。然后我用 time.sleep(3)
等待 3 秒。然后我想在终端中删除一个字符,所以终端将是Hello Worl
。
所以,我想要的结果是:
- 当我启动程序时,打印
Hello World
。 - 程序休眠 3 秒。
- 然后终端中的文本更改为
Hello Worl
。
此外,我从 SO 和 write = sys.stdout.write
、write("\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 = ''
就没有问题了。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。