Pode ser preciosismo meu, mas resolvi criar uma chamada em alguns programas para limpar a tela, ao estilo do comando clear.
Não imaginava por quais veredas inóspitas eu iria entrar...
Primeiramente devo dizer que é fácil fazer uma chamada pra um subshell e utilizar o próprio aplicativo clear.
#! /usr/bin/python
from os import system
system("clear")
Funciona, mas é tosco. E eu queria uma solução "unix like", daquelas que a gente tem orgulho de contar na mesa do bar, no encontro com amigos nerds (afinal serão os únicos que entenderão o que você estava dizendo, o que não significa que vão compartilhar o mesmo sentimento de orgulho que você estava sentindo).
Então mergulhei na biblioteca ncurses. Tentei algumas linhas simples, chamando um método curses.clear().
#! /usr/bin/python
import curses
scrn = curses.initscr()
scrn.clear()
curses.endwin()
Realmente funcionou, mas de uma forma indesejada, não restaurando as propriedades do terminal (você perde a alimentação do cursor, que só é restaurada após utililizar o comando reset).
Então resolvi utilizar o módulo termios para salvar o estado do terminal, e recuperar o mesmo após o método curses.clear(). Ficou um pouco maior do que eu imaginava, mas funcionou muito bem. Agora posso fazer meus scripts Python limparem a tela de uma forma muito elegante.
#! /usr/bin/python
import curses
import termios
from sys import stdin
fd = stdin.fileno()
scr = termios.tcgetattr(fd)
scrn = curses.initscr()
scrn.clear()
termios.tcsetattr(fd, termios.TCSADRAIN, scr)