64 votes

Comment imprimer une sortie colorée dans le terminal en Python ?

Existe-t-il un équivalent en Python de l'outil Perl

print color 'red';
print <something>;
print color 'reset';

disponible ?

J'utilise cette approche :

"\x1b[1;%dm" % (<color code>) + "ERROR: log file does not exist" + "\x1b[0m"

Ce que je veux, c'est pouvoir définir la couleur de tous les messages d'impression, par exemple,

print color 'red'
function_print_something(<some message>)
print color 'reset'

Ici, 'function_print_something' est ma fonction python qui imprimera des messages de journal formatés sur l'écran.

0 votes

Vous pouvez regarder ici stackoverflow.com/questions/27265322/

1 votes

Cela répond-il à votre question ? Comment imprimer un texte coloré sur le terminal ?

3voto

Daniel Points 521

Il existe quelques bibliothèques qui peuvent vous aider dans ce domaine. Pour les outils de ligne de commande, j'utilise parfois colorama .

par exemple

from colorama import init, Fore, Back, Style
init()

def cprint(msg, foreground = "black", background = "white"):
    fground = foreground.upper()
    bground = background.upper()
    style = getattr(Fore, fground) + getattr(Back, bground)
    print(style + msg + Style.RESET_ALL)

cprint("colorful output, wohoo", "red", "black")

Mais au lieu d'utiliser des chaînes de caractères, vous pourriez vouloir utiliser une énumération et/ou ajouter quelques vérifications. Ce n'est pas la solution la plus jolie, mais elle fonctionne sous osx/linux et Windows et est facile à utiliser.

Autres fils de discussion sur ce sujet et le support multiplateforme : Par exemple, ici .

0 votes

Le code d'exemple renvoie une erreur UnboundLocalError: local variable 'style' referenced before assignment . J'ai fini par utiliser termcolor qui était facile à utiliser.

1 votes

Désolé, c'était juste une erreur de copier-coller, puisque j'ai enlevé des choses qui n'étaient pas nécessaires pour l'exemple. L'exemple est corrigé maintenant.

1voto

Yuhao Points 1420

Qu'en est-il de la ansicolors bibliothèque ? Vous pouvez tout simplement le faire :

from colors import color, red, blue

# common colors
print(red('This is red'))
print(blue('This is blue'))

# colors by name or code
print(color('Print colors by name or code', 'white', '#8a2be2'))

1voto

Pervez Points 175

La bibliothèque Color_Console est comparativement plus facile à utiliser. Installez cette bibliothèque et le code suivant vous aidera.

from Color_Console import *
ctext("This will be printed" , "white" , "blue")
The first argument is the string to be printed, The second argument is the color of 
the text and the last one is the background color.

La dernière version de Color_Console vous permet de transmettre une liste ou un dictionnaire de couleurs qui changeraient après un délai spécifié.

En outre, ils disposent d'une bonne documentation sur toutes leurs fonctions.

Visitez https://pypi.org/project/Color-Console/ pour en savoir plus.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X