在许多编程场景中,需要修改或更新终端上显示的输出。本文探讨了将以前的打印内容覆盖到 stdout 的方法,并用同一行上的更新值替换它。
Python 提供r(回车)字符将光标移回到当前行的开头,而不前进到下一行。通过使用 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 中,逗号位于print 语句的末尾阻止它前进到下一行,从而允许覆盖:
# Python 2 for x in range(10): print '{0}\r'.format(x), print
当新的文本行比前一行短时,您可以使用x1b[1K(清除到行尾)来清除剩余的字符:
for x in range(75): print('*' * (75 - x), x, end='\x1b[1K\r') print()
默认情况下,Python 会对超出终端宽度的行进行换行。为了防止这种情况并确保连续的字符覆盖前一行,请使用 x1b[7l:
print('\x1b[7l', end='') # Disable line wrapping for x in range(50): print(x, end='\r') print('\x1b[7h', end='') # Re-enable line wrapping
禁用换行,注意: 禁用换行后始终重新启用换行以避免离开终端处于损坏状态。
以上是如何在 Python 中将以前的输出覆盖为标准输出 (Stdout)?的详细内容。更多信息请关注PHP中文网其他相关文章!