2011-12-02 11 views
11

Sto cercando un modulo Python che aggiungerebbe il supporto ANSI sotto Windows.Modulo Python per abilitare i colori ANSI per lo stdout su Windows?

Ciò significa che dopo l'importazione del modulo, se si generano stringhe di escape ANSI, verranno visualizzate di conseguenza.

+0

Ciò significa che è necessario eseguire il Python monkeypatching, che è una cosa negativa. È meglio impostare il filtro stdout in modo esplicito. –

risposta

3

Esistono due moduli python in grado di eseguire questo modulo colorama e tendo.ansiterm, originariamente scritto per waf.

Con i test iniziali, colorama è più maturo, anche se richiede due righe di codice anziché uno.

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!" 

Ora, sia funzionerà normalmente, ma se si tenta di reindirizzare una sola delle stderr o stdout, ansiterm sarà in uscita codici ANSI per lo screening e l'output reindirizzato.

Non sono sicuro ma ho il sospetto che il comportamento corretto sia quello di eliminare i codici ANSI quando l'output non è un tty, non si vuole vedere l'escape ANSI nei file di registro.

+0

Gli escape ANSI nei file di registro sono soddisfacenti, credo; per esempio, il cercapersone Unix 'less' visualizza correttamente il testo con sequenze di colori ANSI. – EOL

11

La soluzione migliore è probabilmente utilizzare il modulo colorama.

Infatti, credo che la console di Windows non supporti i colori ANSI in modo nativo. colorama risolve questa difficoltà intercettando sequenze ANSI ed eseguendo le opportune chiamate di cambio colore di Windows. In questo modo, il tuo codice può essere abbastanza portatile, in quanto può stampare i colori nello stesso modo sia su Windows che su terminali conformi ANSI.

Problemi correlati