Istnieją dwa moduły python, które mogą wykonać ten moduł colorama
i tendo.ansiterm
, który został pierwotnie napisany dla waf
.
Wstępne testy wskazują, że colorama
jest bardziej dojrzały, nawet jeśli wymaga dwóch wierszy kodu zamiast jednego.
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!"
Teraz oboje będą pracować normalnie, ale jeśli spróbujesz przekierować tylko jedną z stderr lub stdout, ansiterm wyświetli kody ANSI do ekranu i przekierowanie wyjścia.
Nie jestem pewien, ale podejrzewam, że prawidłowe zachowanie polega na usuwaniu kodów ANSI, gdy wynik nie jest tty, nie chcesz wyświetlać ANSI w plikach dziennika.
Oznacza to niedopasowany język Python, co jest złe. Lepiej jest jawnie ustawić filtr stdout. –