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.
Eso significa monkeypatching Python, que es algo malo. Es mejor configurar el filtro stdout explícitamente. –