2011-12-02 26 views
11

Estoy buscando un módulo de Python que agregue compatibilidad con ANSI en Windows.Módulo Python para habilitar colores ANSI para stdout en Windows?

Esto significa que después de importar el módulo, si emite cadenas escapadas ANSI, aparecerán en consecuencia.

+0

Eso significa monkeypatching Python, que es algo malo. Es mejor configurar el filtro stdout explícitamente. –

Respuesta

3

Hay dos módulos de python que pueden hacer esto colorama y tendo.ansiterm módulo, que fue escrito originalmente para waf.

Las pruebas iniciales indican que colorama es más maduro, incluso si requiere dos líneas de código en lugar de una.

import sys 
try: 
    import colorama 
    colorama.init() 
except: 
    try: 
     import tendo.ansiterm 
    except: 
     pass 

sys.stdout.write"\033[33mYellow Submarine" 
sys.stderr.write"\033[31mred, red , wine!" 

Ahora, tanto funcionará normalmente, pero si se intenta redirigir único de los stderr o stdout, ansiterm dará salida a los códigos ANSI para la detección y la salida redirigida.

No estoy seguro pero sospecho que el comportamiento correcto es despojar a los códigos ANSI cuando la salida no es una tty, no quiere ver escapes ANSI en los archivos de registro.

+0

ANSI se escapa en los archivos de registro están bien, creo; por ejemplo, el buscapersonas Unix 'less' muestra correctamente texto con secuencias de color ANSI. – EOL

11

Su mejor opción es probablemente utilizar el módulo colorama.

De hecho, creo que la consola de Windows no es compatible con los colores ANSI de forma nativa. colorama soluciona esta dificultad interceptando secuencias ANSI y realizando las llamadas de cambio de color de Windows apropiadas. De esta forma, su código puede ser bastante portátil, ya que puede imprimir colores de la misma manera tanto en Windows como en terminales que cumplen con ANSI.

Cuestiones relacionadas