man console_codes
Читаем про коды, которые перемещают по экрану (ESC[x;yH), меняют цвета (ESC[x;y;zm) и всё такое. Также обратить внимание на scroll region (ESC[top;bottomr), сохранение и восстановление положения курсора (ESC[?s, ESC[?u). Размер терминала можно получить с помощью ioctl TIOCGWINSZ (низкоуровневый вариант) или функции get_terminal_size модуля shutil, изменение размеров терминала в процессе работы можно отслеживать с помощью сигнала SIGWINCH.