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

Python中如何仅清除屏幕部分区域?

局部清除屏幕区域的可行方案

因为os.system('cls')是全屏清除,要保留顶部内容只清除指定区域,用ANSI终端控制序列是最直接的方法,不用第三方库,VS Code终端完全支持。

步骤1:Windows系统先启用ANSI支持(Linux/macOS跳过)

Windows默认命令提示符不支持ANSI转义序列,需要先开启:

import sys
if sys.platform.startswith('win'):
    import ctypes
    kernel32 = ctypes.WinDLL('kernel32')
    # 启用终端的ANSI颜色和光标控制支持
    kernel32.SetConsoleMode(kernel32.GetStdHandle(-11), 7)

步骤2:定义局部清屏函数

写一个函数,传入要开始清除的行号(行号从1开始),就能清除该行及以后的所有内容:

def clear_from_line(start_line):
    # 把光标移动到目标行的开头位置
    print(f"\033[{start_line};1H", end='')
    # 清除从光标位置到屏幕末尾的所有内容
    print("\033[J", end='')

步骤3:示例用法

# 先打印需要保留的顶部内容
print("=== 我的Python学习程序 ===")
print("程序说明:这是一个测试局部清屏的例子")
print("第三行:固定内容")
print("第四行:固定内容")
print("第五行:旧的输入提示:请输入内容...")
print("第六行:旧的输入结果:你输入了XXX")

# 模拟用户操作,等待回车触发更新
input("按回车更新下方内容...")

# 清除第5行及以后的区域
clear_from_line(5)

# 打印新的内容
print("第五行:新的输入提示 > ")
# 后续可以继续处理用户输入
user_input = input()
print(f"第六行:你输入了:{user_input}")

原理说明

  • \033[{start_line};1H:ANSI转义序列,作用是将光标移动到第start_line行、第1列的位置。
  • \033[J:清除从当前光标位置到屏幕末尾的所有内容,不会影响光标上方的内容。

这样就能完美保留顶部的标题和说明,只更新下方区域,不用循环重打整个屏幕。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 06:49:58