26 dic 2011

[Python] Formatear texto en la terminal de Linux

Una de las características que mas nos gustan de la terminal de Linux es la posibilidad de dar formato a la salida de los comandos, a nuestro prompt, etc.

Como quería que mi juego del ahorcado fuese algo mas vistoso recurrí a un modulo de Python que me hiciese el trabajo, pero tras buscar en Internet encontré como hacerlo tal y como se hace (bueno, casi) en Bash.

Para hacerlo se hace del siguiente modo

\x1b[Xm
Donde X es un código numérico que indica que formato se le va a dar.
También es posible definir varios a la vez separados por ;
\x1b[X;Ym

Por ejemplo pongamos que queremos que el color del texto sea verde y este en negrita:
print '\x1b[1;32mEsto esta en verde\x1b[0m'
El resultado seria similar a este:

Esto esta en verde

En el ejemplo vemos que el texto que se va a imprimir en pantalla va justo detrás de la m y al final ponemos \x1b[0m el cual indica al interprete que limpie el formato y por lo tanto lo que va detrás se vería como este definido en el sistema.

Esta es la tabla con los diferentes formatos. Nota: Algunos formatos (como la italica) pueden no estar disponibles

  • \x1b[0m -> Limpia el formato
  • \x1b[1m -> Negrita
  • \x1b[3m -> Italica
  • \x1b[4m -> Subrayado
  • \x1b[7m -> Invierte los colores del texto y del fondo
  • \x1b[9m -> Tachado
  • \x1b[22m -> Cierra negrita
  • \x1b[23m -> Cierra italica
  • \x1b[24m -> Cierra subrayado
  • \x1b[27m -> Cierra inverso
  • \x1b[29m -> Cierra tachado
  • \x1b[30m -> Frente en negro
  • \x1b[31m -> Frente en rojo
  • \x1b[32m -> verde
  • \x1b[33m -> Frente en amarillo
  • \x1b[34m -> Frente en azul
  • \x1b[35m -> Frente en magenta
  • \x1b[36m -> Frente en cyan
  • \x1b[37m -> Frente en blanco
  • \x1b[39m ->Color de frente por defecto
  • \x1b[40m -> Fondo en negro
  • \x1b[41m -> Fondo en rojo
  • \x1b[42m -> Fondo verde
  • \x1b[43m -> Fondo en amarillo
  • \x1b[44m -> Fondo en azul
  • \x1b[45m -> Fondo en magenta
  • \x1b[46m -> Fondo en cyan
  • \x1b[37m -> Fondo en blanco
  • \x1b[39m ->Color de fondo por defecto

Espero que os sea de utilidad. Si conoceís otros códigos de formateo escribirlo en un comentario y gustosamente los pondré en este entrada ^^

Visto en Lista de correo de Python

1 comentarios:

Anónimo dijo...

estaba buscando exactamente esto, Gracias

Publicar un comentario

Twitter Delicious Facebook Digg Stumbleupon Favorites More

 
Powered by Blogger