Python3如何实现终端多行输出内容的动态覆写刷新?
解决方案
使用终端ANSI转义序列控制光标位置和行清空即可实现多行内容局部覆写,无需清整屏,兼容绝大多数主流终端环境。
完整可运行代码
import time import os # Windows旧版cmd/PowerShell兼容:开启ANSI转义序列支持 if os.name == 'nt': os.system('') for n in range(1, 10): # 非首次循环:清空已打印的两行内容,将光标复位到第一行行首 if n > 1: print('\033[F\033[K\033[F\033[K', end='') print(n) print(n * 2) time.sleep(1)
控制码说明
\033[F:将光标移动到上一行的行首位置\033[K:清空当前光标位置到行尾的所有内容
连续使用两组上述控制码,即可实现对前两行内容的完整清理,后续打印的新内容会直接覆盖原有位置,不会产生新行。
注意事项
- 该方案不会清除终端历史输出,仅修改当前脚本打印的两行内容,过渡效果平滑
- 如需覆写更多行,只需对应增加
\033[F\033[K的组数即可,比如3行覆写就使用3组控制码
内容的提问来源于stack exchange,提问作者Aurélien BOUDIER
相关产品推荐
相关产品推荐

