这可以使用提供控制台带内控制的 ANSI 转义序列来完成。这就是 curses 库在后端的工作方式。
这个序列应该适合你想要的,为了清楚起见分开:
print("\u001B[s", end="") # Save current cursor position
print("\u001B[A", end="") # Move cursor up one line
print("\u001B[999D", end="") # Move cursor to beginning of line
print("\u001B[S", end="") # Scroll up/pan window down 1 line
print("\u001B[L", end="") # Insert new line
print(status_msg, end="") # Print output status msg
print("\u001B[u", end="") # Jump back to saved cursor position
请注意,这并非特定于 python 并且适用于大多数控制台。
参考:
http://xn--rpa.cc/irl/term.html - 非常适合没有诅咒的 TUI 编程,包括有关为 vim 使用单独缓冲区的信息,例如屏幕切换
https://invisible-island.net/xterm/ctlseqs/ctlseqs.html - 完整的 ANSI 转义标准,维基百科不包括关键序列