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

如何清除控制台但保留指定打印行?Python循环打印场景需求

保留指定行并刷新控制台输出的实现方法

要实现保留"Your status - online"行,同时刷新后续的搜索状态避免重叠,可以利用ANSI转义序列精确控制光标位置和控制台内容,以下是跨平台的实现方案:

核心实现代码

import sys
import time
import os

# Windows系统需手动启用ANSI转义序列支持
if os.name == 'nt':
    import ctypes
    kernel32 = ctypes.windll.kernel32
    kernel32.SetConsoleMode(kernel32.GetStdHandle(-11), 7)

# 打印需要保留的固定行
print("Your status - online")
# 保存当前光标位置(位于固定行的下一行开头)
sys.stdout.write("\033[s")

while True:
    # 恢复光标到之前保存的位置,并清除该行从光标到末尾的内容
    sys.stdout.write("\033[u\033[K")
    # 打印刷新的状态内容
    sys.stdout.write("Searching for server")
    # 强制刷新缓冲区,确保内容立即显示
    sys.stdout.flush()
    # 模拟搜索操作的延迟(可根据实际场景调整)
    time.sleep(1)

关键逻辑说明

  • \033[s:保存当前光标位置,后续循环可以快速回到固定行的下一行开头。
  • \033[u:恢复到之前保存的光标位置,确保每次都在同一行更新内容。
  • \033[K:清除当前行中光标位置到末尾的所有内容,避免旧内容残留重叠。
  • 使用sys.stdout.write而非print:print会自动添加换行符,破坏光标位置控制;write能更精准地控制输出内容和位置。
  • sys.stdout.flush():强制将缓冲区内容输出到控制台,避免因缓冲导致的更新延迟。

效果说明

运行代码后,控制台会始终显示Your status - online在第一行,第二行的Searching for server会每隔1秒刷新一次(不会产生多行重叠的情况)。

内容的提问来源于stack exchange,提问作者wasdy

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 21:40:46