You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python如何实现两行print内容原位循环更新且不合并打印语句

实现思路

你原来的代码仅用\r只能让光标回到当前行的开头,无法修改上一行的内容,因此需要通过ANSI转义序列控制光标位置实现两行原地更新,具体逻辑如下:

  • 首次循环时正常输出两行内容,完成初始占位
  • 后续每次循环开始时,先通过ANSI控制码将光标向上移动2行,回到第一行的起始位置
  • 两次独立调用print分别输出两行内容,每行末尾添加清行控制码,避免数字位数变化时残留旧字符

可运行实现代码

import time

i = 0
b = 0
is_first_run = True
while True:
    i += 1
    b += 1
    time.sleep(2)
    # 非首次运行时,光标上移2行回到第一行开头
    if not is_first_run:
        print("\033[2A", end='')
    # 独立打印第一行,末尾加清行控制符
    print('Jack: {} \033[K'.format(str(i)))
    # 独立打印第二行,末尾加清行控制符
    print('Han : {} \033[K'.format(str(b)))
    is_first_run = False

说明

  • 代码中两个print完全独立,没有合并,符合要求
  • ANSI转义序列兼容绝大多数现代终端(Windows 10 1511+版本的CMD、PowerShell,Linux、MacOS的默认终端均支持)
  • 旧版Windows终端如果无法生效,可以在代码开头添加以下内容开启虚拟终端支持:
import ctypes
kernel32 = ctypes.windll.kernel32
kernel32.SetConsoleMode(kernel32.GetStdHandle(-11), 7)

内容的提问来源于stack exchange,提问作者Hạnh Nguyễn

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 02:42:01