couleurs texte console python

Mettre des couleurs en mode console à un texte sous Python

Mettre des couleurs à un texte en mode console avec Python est un peu embêtant quelque fois. Fort heureusement, il existe des astuces…

Mettre des couleurs à un texte en mode console avec Python

On peut utiliser des codes d’échappement ANSI pour commencer.

Dans l’exemple ci-dessous, j’ai envie de coloriser chaque majuscule d’un texte, en alternant les couleurs:

class color:
    g = '\033[92m' # vert
    y = '\033[93m' # jaune
    r = '\033[91m' # rouge
    n = '\033[0m' #gris, couleur normale
    
lipsum = 'Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut purus elit, vestibulum ut, placerat ac, adipiscing vitae, felis. Curabitur dictum gravida mauris. Nam arcu libero, nonummy eget, consectetuer id, vulputate a, magna. Donec vehicula augue eu neque. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Mauris ut leo. Cras viverra metus rhoncus sem. Nulla et lectus vestibulum urna fringilla ultrices. Phasellus eu tellus sit amet tortor gravida placerat. Integer sapien est, iaculis in, pretium quis, viverra ac, nunc. Praesent eget sem vel leo ultrices bibendum. Aenean faucibus. Morbi dolor nulla, malesuada eu, pulvinar at, mollis ac, nulla. Curabitur auctor semper nulla. Donec varius orci eget risus. Duis nibh mi, congue eu, accumsan eleifend, sagittis quis, diam. Duis eget orci sit amet orci dignissim rutrum.'

def colorise(text):
    couleurs = [ color.g , color.y , color.r ]
    r = ''
    i = 0
    for c in text:
        if c.upper() == c:
            r += couleurs[i] + c + color.n
            i = (i+1) % 3
        else:
            r += c
            
    return r
            
print( colorise(lipsum) )

Le résultat est alors le suivant:

Le soucis avec cette technique est qu’il faut trouver les codes d’échappement pour les autres couleurs si l’on veut en ajouter d’autres (comme le bleu par exemple).

à l’aide du module colorama

Fort heureusement, il existe ce module “colorama”.

Ce module offre d’ailleurs bien plus que la colorisation du texte: elle permet aussi de faire un fond de couleur et d’agir sur le style du texte (gras par exemple).

Vous trouverez quelques exemples intéressants sur la page https://he-arc.github.io/livre-python/colorama/index.html.

Pour installer colorama avec PIP:

pip install colorama

avec anaconda:

conda install -c anaconda colorama

A priori, le module est installé par défaut, mais sait-on jamais…

Si vous êtes sous windows, il faudra avant tout faire appel à la fonction init().

from colorama import Back, Fore, Style, deinit, init

init() # sous windows

print(Fore.RED + Style.NORMAL + 'Un texte normal écrit en rouge.')
print(Back.WHITE + 'Un texte normal écrit toujours en rouge mais avec un fond blanc.')
print(Style.BRIGHT + 'La même chose mais en plus lumineux.')
print(Style.RESET_ALL + 'Retour à la normale.')

deinit() # pour arrêter colorama
python texte couleurs console colorama

Ce module peut s’avérer utile lorsque l’on ne souhaite pas passer en mode graphique. C’est souvent le cas lorsque l’on apprend Python.

News de dernière minute…

On vient de me dire à l’oreillette Twitter qu’il existe un module bien plus riche que colorama, un module qui utilise d’ailleurs ce dernier: le module rich.

On peut donc aller jeter un coup d’œil sur la page https://pypi.org/project/rich.

Notons par exemple que la syntaxe est des plus sympathique:

from rich.console import Console

console = Console()
console.print("Salut tout le monde!", style="bold yellow")
console.print("Là où il y a le [bold cyan]Futur[/bold cyan] il y a [u]un[/u] [i]chemin[/i].")
python module rich

Ce module est réellement bien! Il permet aussi de faire des tables (les GIFs suivants ont été repris du site précédemment cité):

Construction de tables

mais aussi des barres de progression (ça, c’est bien utile des fois non ?):

Barres de progression

On peut aussi faire:

  • des arborescences
  • des emojis
  • des “Syntax Highlighting” (écrire un code Python dans le terminal)

Laisser un commentaire