Module Python pour activer les couleurs ANSI pour stdout sous Windows?
-
27-10-2019 - |
Question
Je suis à la recherche d'un module Python qui ajouter le support ANSI sous Windows.
Cela signifie que après avoir importé le module, si vous chaînes échappé sortie ANSI, ils apparaissent en conséquence.
La solution
Il y a deux modules de python qui sont capables de faire colorama
et tendo.ansiterm
le module , qui a été initialement écrit pour waf
.
Par les premiers tests indiquent que colorama
est plus mature, même si elle a besoin de deux lignes de code au lieu d'un.
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!"
Maintenant, les deux fonctionneront normalement mais si vous essayez de rediriger un seul des stderr ou stdout, ansiterm Affichera codes ANSI à l'écran et la sortie redirigée.
Je ne suis pas sûr, mais je pense que le comportement correct est de supprimer les codes ANSI lorsque le si de sortie et non un téléscripteur, vous ne voulez pas voir ANSI échappe dans des fichiers journaux.
Autres conseils
Votre meilleur pari est probablement d'utiliser le module Colorama .
En fait, je crois que la console Windows ne supporte pas les couleurs ANSI en mode natif. Colorama résout cette difficulté en interceptant des séquences ANSI et effectuer les appels de changement de couleur Windows appropriés. De cette façon, votre code peut être tout à fait portable, car il peut imprimer des couleurs de la même manière à la fois sous Windows et dans les terminaux conformes aux normes ANSI.