Est-ce que le Module Python termcolor faire ? Ce serait un équivalent approximatif pour certaines utilisations.
from termcolor import colored
print colored('hello', 'red'), colored('world', 'green')
L'exemple est tiré de ce poste qui en contient beaucoup plus. Voici une partie de l'exemple tiré de la documentation
import sys
from termcolor import colored, cprint
text = colored('Hello, World!', 'red', attrs=['reverse', 'blink'])
print(text)
cprint('Hello, World!', 'green', 'on_red')
Une exigence spécifique était de définir la couleur, et probablement d'autres attributs du terminal, de sorte que toutes les impressions suivantes soient de cette façon. Bien que j'aie déclaré dans le message original que cela était possible avec ce module, je ne le pense plus. Voir la dernière section pour une façon de le faire.
Cependant, la plupart du temps, nous imprimons de courts segments de texte en couleur, une ligne ou deux. L'interface présentée dans ces exemples est donc peut-être mieux adaptée que d'activer une couleur, d'imprimer, puis de la désactiver (comme dans l'exemple Perl présenté). (Comme dans l'exemple Perl présenté.) Peut-être pouvez-vous ajouter un ou plusieurs arguments optionnels à votre fonction d'impression pour colorer la sortie, et dans la fonction utiliser les fonctions du module pour colorer le texte. Cela permet également de résoudre plus facilement les conflits occasionnels entre le formatage et la coloration. C'est juste une idée.
Voici une approche de base pour configurer le terminal afin que toutes les impressions suivantes soient rendues avec une couleur, des attributs ou un mode donnés.
Une fois qu'une séquence ANSI appropriée est envoyée au terminal, tout le texte suivant est rendu de cette manière. Ainsi, si nous voulons que tout le texte imprimé sur ce terminal à l'avenir soit rouge vif/gras, il faut imprimer ESC[
suivi des codes pour l'attribut "brillant" (1) et la couleur rouge (31), suivi de m
# print "\033[1;31m" # this would emit a new line as well
import sys
sys.stdout.write("\033[1;31m")
print "All following prints will be red ..."
Pour désactiver tout attribut précédemment défini, utilisez 0 pour l'attribut, \033[0;35m
(magenta).
Pour supprimer une nouvelle ligne dans python 3, utilisez print('...', end="")
. Le reste du travail consiste à emballer le tout pour une utilisation modulaire (et pour une digestion plus facile).
Fichier colors.py
RED = "\033[1;31m"
BLUE = "\033[1;34m"
CYAN = "\033[1;36m"
GREEN = "\033[0;32m"
RESET = "\033[0;0m"
BOLD = "\033[;1m"
REVERSE = "\033[;7m"
Je recommande une lecture rapide de quelques références sur les codes. Les couleurs et les attributs peuvent être combinés et on peut constituer une belle liste dans ce paquet. Un script
import sys
from colors import *
sys.stdout.write(RED)
print "All following prints rendered in red, until changed"
sys.stdout.write(REVERSE + CYAN)
print "From now on change to cyan, in reverse mode"
print "NOTE: 'CYAN + REVERSE' wouldn't work"
sys.stdout.write(RESET)
print "'REVERSE' and similar modes need be reset explicitly"
print "For color alone this is not needed; just change to new color"
print "All normal prints after 'RESET' above."
Si l'utilisation constante de sys.stdout.write()
est un problème, il peut être enveloppé dans une petite fonction, ou le paquet peut être transformé en une classe avec des méthodes qui définissent le comportement du terminal (impression des codes ANSI).
Une partie de ce qui précède est plutôt une suggestion de recherche, comme la combinaison du mode inverse et de la couleur. (Ceci est disponible dans le module Perl utilisé dans la question, et est également sensible à l'ordre et similaire).
Une liste pratique de codes d'échappement est étonnamment difficile à trouver, tandis qu'il existe de nombreuses références sur le comportement des terminaux et la manière de le contrôler. Le site Page wiki sur les codes d'échappement ANSI possède toutes les informations mais nécessite un peu de travail pour les rassembler. Pages sur Invite Bash ont beaucoup d'informations spécifiques et utiles. Voici une autre page avec des tableaux de codes droits. Il existe bien d'autres choses.
Il peut être utilisé avec un module comme termocolor
.
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 ?