python - 如何将以前的打印覆盖到标准输出?

标签 python

如果我有以下代码:

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/

相关文章:

python - 用 [Errno 2] 重命名脚本没有这样的文件或目录

python - 如何使用 ConditionExpression 检查非键属性是否已存在于 dynamodb 中?

python - 如何在列表中按字母顺序取出最长的子串?

python - 在 Python 中查找总素数(进程终止错误)

python - 我如何在 Python 中接收来自 IBs API 的数据?

python - 合并两个pandas数据帧: if statement returns: "The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()"

python - 从单个 2D 视频重建飞行物体的 3D 轨迹

python - 使用 python 进行线程/While 循环

python - 在 python 中从多个线程实现自定义输出日志记录

python - 选择行并替换值小于 Pandas 中特定值的列