2011-12-02 10 views

Odpowiedz

3

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.

+0

ANSI ucieczki w dziennikach są w porządku, wierzę; na przykład, 'less' pager Unix poprawnie wyświetla tekst z sekwencjami kolorów ANSI. – EOL

11

Najlepiej jest użyć modułu colorama.

W rzeczywistości uważam, że konsola systemu Windows nie obsługuje natywnie kolorów ANSI. colorama rozwiązuje tę trudność, przechwytując sekwencje ANSI i wykonując odpowiednie wywołania koloru Windows. W ten sposób Twój kod może być całkiem przenośny, ponieważ może drukować kolory w ten sam sposób, zarówno w Windowsie, jak i terminalach zgodnych z ANSI.

Powiązane problemy