如何在python中覆盖上一次打印到标准输出?

如果我有以下代码:

范围(10)内x的

:
打印x

我将得到

1
2.
等

我想做的不是打印换行符,而是替换上一个值并在同一行上用新值覆盖它

简单版本

一种方法是使用回车符('\r')返回到行首,而不前进到下一行

Python 3

范围(10)内x的

:
打印(x,end='\r')
打印()

Python2.7向前兼容

来自未来导入打印功能的


对于范围(10)内的x:
打印(x,end='\r')
打印()

Python 2.7

范围(10)内x的

:
打印“{}\r.”格式(x),
打印

Python 2.0-2.6

范围(10)内x的

:
打印“{0}\r.”格式(x),
打印

在后两种情况下(仅限Python 2),print语句末尾的逗号告诉它不要转到下一行。最后一条打印语句前进到下一行,这样您的提示就不会覆盖最终输出

线路清洗

如果不能保证新行文本不短于现有行,则只需添加一个“清除到行尾”转义序列,'\x1b[1K''\x1b'=ESC):

范围(75)内x的

:
打印('*'*(75-x),x,end='\x1b[1K\r')
打印()

发表评论