HOWTO · Python
Texte en couleur imprimé en Python
Cet article montre comment imprimer du texte en couleur en Python
Sur cette page
Ce guide explique comment afficher du texte coloré dans un terminal avec Python. print() écrit du texte dans son flux de sortie ; les séquences d’échappement ANSI qu’il contient demandent des changements de mise en forme à un terminal qui les prend en charge. Un terminal peut afficher ces séquences en couleur, tandis qu’un fichier journal, un panneau d’IDE ou une autre destination peut montrer les codes tels quels. Pour les couleurs d’arrière-plan et d’autres commandes de terminal, consultez les codes d’échappement ANSI et le guide sur les couleurs en Python.
Fonctionnement des codes de couleur du terminal
Une séquence de couleur ANSI commence par le caractère d’échappement (\033) et comprend des paramètres numériques qui sélectionnent une couleur de premier plan, une couleur d’arrière-plan ou un style. Par exemple, \033[31m demande un texte rouge et \033[0m demande une réinitialisation. C’est le terminal qui interprète ces caractères de contrôle ; Python ne colore pas la chaîne lui-même. La prise en charge dépend du terminal et de la destination de la sortie : le texte coloré n’est donc pas garanti dans toutes les consoles ni dans les fichiers vers lesquels la sortie est redirigée.
Une réinitialisation est importante, car la mise en forme du terminal peut rester active après l’affichage d’un message. Réinitialiser la mise en forme à la fin de chaque segment coloré évite que le texte suivant, dans la même session de terminal, hérite de ce style.
Imprimer du texte coloré avec des codes d’échappement ANSI
Définissez des constantes nommées pour réutiliser et modifier facilement les séquences. Cet exemple autonome affiche trois messages et réinitialise la mise en forme après chacun. Il est fourni sous forme de code ; aucun résultat d’exécution n’est revendiqué ici.
Exécutez cet exemple :
Le code et les libellés ou sorties affichés dans cette section restent en anglais.
class Colors:
GREEN = "\033[92m"
YELLOW = "\033[93m"
RED = "\033[91m"
RESET = "\033[0m"
print(Colors.GREEN + "File Saved Successfully!" + Colors.RESET)
print(Colors.YELLOW + "Warning: Are you sure you want to continue?" + Colors.RESET)
print(Colors.RED + "Unable to delete record." + Colors.RESET)
Pour adapter l’exemple, remplacez une constante de couleur par une autre séquence ANSI prise en charge. Vous pouvez aussi insérer directement une séquence dans une chaîne ou utiliser une f-string ; ces choix de mise en forme ne changent pas les terminaux capables d’interpréter la séquence. Le code reste sélectionnable pour être copié et modifié.
Utiliser Colorama pour assurer la compatibilité avec Windows
L’affichage des séquences ANSI dépend de l’environnement du terminal. Sous Windows, colorama peut aider les applications qui émettent des séquences ANSI à fonctionner avec les consoles prises en charge, mais le comportement dépend toujours de la console et de la destination de la sortie. Installez le paquet dans l’environnement qui exécute le script avec python -m pip install colorama (ou python3 -m pip install colorama) ; ce sont des commandes shell, et non des instructions Python.
L’exemple complet qui suit gère le cas où le paquet facultatif n’est pas installé. Lorsqu’il est disponible, il initialise Colorama et associe une couleur de premier plan à un style lumineux. Cet exemple n’a pas été exécuté ici, et la branche qui dépend du paquet nécessite que Colorama soit installé.
Le code et les libellés ou sorties affichés dans cette section restent en anglais.
try:
import colorama
from colorama import Fore, Style
except ImportError:
print("Install colorama with: python -m pip install colorama")
else:
colorama.init()
print(Fore.BLUE + Style.BRIGHT + "This is the color of the sky" + Style.RESET_ALL)
print(Fore.GREEN + "This is the color of grass" + Style.RESET_ALL)
print(Fore.BLUE + Style.DIM + "This is a dimmer version of the sky" + Style.RESET_ALL)
print(Fore.YELLOW + "This is the color of the sun" + Style.RESET_ALL)
Colorama fournit des constantes de couleur de premier plan via Fore et des styles de texte via Style. Style.RESET_ALL réinitialise les styles ANSI actifs ; Fore.RESET réinitialise la couleur de premier plan. Le rendu réel varie selon le terminal.
Réinitialiser les couleurs et les autres styles du terminal
Pour les séquences ANSI brutes, ajoutez une réinitialisation telle que \033[0m après le texte coloré. L’exemple utilise une constante nommée RESET pour cette séquence, afin que la mise en forme de chaque message soit autonome. Sans réinitialisation, la sortie suivante peut conserver la couleur ou le style choisi jusqu’à ce qu’une autre séquence le modifie ou que le terminal le réinitialise.
Avec Colorama, utilisez Style.RESET_ALL pour rétablir l’ensemble de la mise en forme par défaut. Fore.RESET ne réinitialise que la couleur de premier plan ; il ne réinitialise pas les autres styles actifs. Choisissez la réinitialisation qui correspond aux attributs modifiés et placez-la juste après le texte à mettre en forme. Ainsi, les messages et invites suivants n’héritent pas d’un style de terminal indésirable.