This can be done using ANSI escape sequences that provide in-band control of the console. This is how the curses library works on the backend.
This sequence should work for what you want, split apart for clarity:
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
Note this is not specific to python and works on most consoles.
References:
http://xn--rpa.cc/irl/term.html - Great for TUI programming without curses, includes info on using a separate buffer for vim like screen switching
https://invisible-island.net/xterm/ctlseqs/ctlseqs.html - Full ANSI escape standard, the Wikipedia one excludes critical sequences