在Python中,如何在打印后更改文本?

fut*_*216 12 python

我有一个我正在编写的Python程序,我希望它能够在打印后更改文本.例如,假设我想打印"你好"并每秒擦除一个字母.我该怎么做呢?

此外,我听说过诅咒,但我无法让它工作,我不想简单地创建新行,直到旧文本离开屏幕.

Mar*_*tos 13

这是一种方法.

print 'hello',
sys.stdout.flush()
...
print '\rhell ',
sys.stdout.flush()
...
print '\rhel ',
sys.stdout.flush()
Run Code Online (Sandbox Code Playgroud)

您也可以通过ANSI转义获得聪明.就像是

sys.stdout.write('hello')
sys.stdout.flush()
for _ in range(5):
    time.sleep(1)
    sys.stdout.write('\033[D \033[D')
    sys.stdout.flush()
Run Code Online (Sandbox Code Playgroud)

  • @Lenny K:我不知道你为什么得到那个输出.在打印截断的表单之前,`\ r`应该将光标推回到行的开头.如果你使用的是Windows,那么第二个解决方案肯定是行不通的,因为微软作为命令外壳(cmd.exe)传递的那个脑子死亡的垃圾不能识别ANSI转义,尽管我会预料到第一个版本工作. (2认同)