如何在 python 脚本中第二个进度条出现时清除之前的输出?
Python 脚本中,尤其在显示进度条或动态信息时,常常需要清除终端特定区域的输出,以保持界面整洁。本文将详细介绍如何在第二个进度条显示时,清除之前的输出区域。
问题描述中提到,脚本使用 inquirer 库处理用户交互,并在显示第二个进度条时需要清除之前的输出。 为了解决这个问题,我们可以利用 r 字符返回行首覆盖之前的输出,或者使用 ANSI 转义码进行更精细的控制。
方法一:使用 r 字符覆盖输出
r 字符可以将光标移动到当前行的开头,从而用新的输出覆盖之前的文本。 以下是一个简单的例子:
立即学习“Python免费学习笔记(深入)”;
import time for i in range(10): print(f"{i=}", end="r", flush=True) # flush=True 确保立即输出 time.sleep(1)
这段代码每秒更新同一行的输出,r 确保每次输出都覆盖之前的数字。 这种方法简单易用,但仅适用于覆盖同一行内容的情况。
方法二:使用 ANSI 转义码清除指定区域
ANSI 转义码可以更精确地控制终端输出,包括清除屏幕或特定行。 以下函数可以清除指定行数:
import sys def clear_lines(num_lines): for _ in range(num_lines): sys.stdout.write("