如何用Python 3.x清除终端中两行打印内容?
解决终端多行内容清除后重新打印的问题
你之前用\r无效是因为回车符\r只能将光标移到当前行的开头,无法处理多行内容,所以没法清除上一行的文字。下面提供几种可行的解决方案:
方法1:使用ANSI转义序列(跨平台,推荐)
ANSI转义序列可以直接控制终端光标和内容,大部分现代终端(Linux/macOS终端、Windows Terminal等)都支持:
精准清除指定行
import time # 打印初始两行内容,flush确保立即输出 print("Hi !\nHow are you ?", flush=True) time.sleep(1) # 光标上移2行,回到第一行开头 print("\033[2A", end='') # 清除当前行(第一行) print("\033[K", end='') # 换行到第二行,清除该行 print("\n\033[K", end='') # 再次上移2行,回到初始位置准备打印新内容 print("\033[2A", end='') # 打印新内容 print("New\nText")
直接清屏(更简单)
如果不需要保留其他终端内容,直接清屏更省事:
import time print("Hi !\nHow are you ?", flush=True) time.sleep(1) # \033[2J 清除整个屏幕,\033[H 将光标移到左上角 print("\033[2J\033[H", end='') print("New\nText")
方法2:调用系统清屏命令
通过系统自带的清屏命令实现,兼容性好但依赖系统环境:
import time import os print("Hi !\nHow are you ?") time.sleep(1) # Windows用cls,Linux/macOS用clear os.system('cls' if os.name == 'nt' else 'clear') print("New\nText")
内容的提问来源于stack exchange,提问作者mbcraft
相关产品推荐
相关产品推荐

