如果我有以下代码:
for x in range(10):
print x
我会得到输出
1
2
etc..
我想做的不是打印换行符,而是替换以前的值并用同一行上的新值覆盖它。
最佳答案
简单版
一种方法是使用回车符('\r'
)返回行首而不前进到下一行。
Python 3
for x in range(10):
print(x, end='\r')
print()
Python 2.7 向前兼容
from __future__ import print_function
for x in range(10):
print(x, end='\r')
print()
Python 2.7
for x in range(10):
print '{}\r'.format(x),
print
Python 2.0-2.6
for x in range(10):
print '{0}\r'.format(x),
print
在后两种情况下(仅限 Python 2),print 语句末尾的逗号告诉它不要转到下一行。最后一个打印语句前进到下一行,因此您的提示不会覆盖您的最终输出。
线路清洗
如果不能保证新的文本行不短于现有行,那么只需要添加一个“clear to end of line”转义序列,'\x1b[1K'
('\x1b'
= ESC):
for x in range(75):
print('*' * (75 - x), x, end='\x1b[1K\r')
print()
关于python - 如何将以前的打印覆盖到标准输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5419389/