首页 >后端开发 >Python教程 >如何在 Python 中的同一行上覆盖以前的打印输出?

如何在 Python 中的同一行上覆盖以前的打印输出?

Susan Sarandon
Susan Sarandon原创
2024-12-08 18:20:11363浏览

How Can I Overwrite Previous Print Outputs on the Same Line in Python?

覆盖同一行上以前的打印输出

在编程中,经常会遇到需要更新显示在上的现有值的情况标准输出(stdout)而不添加换行符。考虑以下 Python 代码:

for x in range(10):
    print(x)

此代码在不同的行上输出数字 1 到 10。要覆盖以前的值并将其替换为同一行上的新值,您可以使用以下技术:

简单版本:

利用回车符 ( '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

在这些示例中,打印语句后面的尾随逗号会抑制换行符。最终的打印语句前进到下一行,确保您的提示不会覆盖您的输出。

行清理:

如果您不能保证新行文本不短于现有行,您可以使用“清除到行尾”转义序列 'x1b[1K' ('x1b' = ESC):

for x in range(75):
    print('*' * (75 - x), x, end='\x1b[1K\r')
print()

长换行:

上述方法假设您的书写没有超出行长。回车仅返回到当前行的开头。因此,如果您的输出超过行长度,则只会删除最后一行。

要缓解此问题并防止光标换行到下一行,您可以禁用换行:

print('\x1b[7l', end='')    # Disable line wrapping
print('\x1b[7h', end='')    # Re-enable line wrapping

请注意,您必须在代码块末尾手动重新启用换行,以避免使终端处于损坏状态。

以上是如何在 Python 中的同一行上覆盖以前的打印输出?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn