HOWTO · Python
Python Print farbiger Text
Dieser Artikel zeigt, wie farbiger Text in Python gedruckt werden kann
Auf dieser Seite
Diese Anleitung zeigt, wie Sie mit Python farbigen Text in einem Terminal ausgeben. print() schreibt Text in seinen Ausgabestrom; darin eingebettete ANSI-Sequenzen fordern Formatierungsänderungen von einem Terminal an, das sie unterstützt. Ein Terminal kann diese Sequenzen als Farben darstellen, während eine Protokolldatei, ein IDE-Fenster oder ein anderes Ausgabeziel die Codes wörtlich anzeigen kann. Informationen zu Hintergrundfarben und weiteren Terminalsteuerungen finden Sie in der Referenz zu ANSI-Escape-Codes und in der Anleitung zu Farben in Python.
So funktionieren Farbsteuerungscodes im Terminal
Eine ANSI-Farbsequenz beginnt mit dem Escape-Zeichen (\033) und enthält numerische Parameter, die eine Vordergrundfarbe, Hintergrundfarbe oder einen Stil auswählen. Zum Beispiel fordert \033[31m roten Vordergrundtext und \033[0m eine Rücksetzung an. Das Terminal interpretiert diese Steuerzeichen; Python selbst färbt die Zeichenkette nicht ein. Die Unterstützung hängt vom Terminal und davon ab, wohin die Ausgabe gesendet wird. Farbiger Text ist daher nicht in jeder Konsole und nicht in jeder umgeleiteten Datei gewährleistet.
Eine Rücksetzung ist wichtig, weil die Terminalformatierung nach der Ausgabe einer Nachricht aktiv bleiben kann. Wenn Sie jedes farbige Segment am Ende zurücksetzen, übernimmt späterer Text in derselben Terminalsitzung diese Formatierung nicht.
Farbigen Text mit ANSI-Escape-Codes ausgeben
Definieren Sie benannte Konstanten, damit sich die Sequenzen einfach wiederverwenden und ändern lassen. Dieses eigenständige Beispiel gibt drei Nachrichten aus und setzt die Formatierung nach jeder zurück. Es wird als Code bereitgestellt; ein Ausführungsergebnis wird hier nicht behauptet.
Führen Sie dieses Beispiel aus. Der Code und die darin angezeigten Bezeichnungen bleiben auf Englisch.
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)
Um das Beispiel anzupassen, ersetzen Sie eine Farbkonstante durch eine andere unterstützte ANSI-Sequenz. Sie können eine Sequenz auch direkt in eine Zeichenkette einfügen oder einen f-String verwenden. Diese Formatierungsvarianten ändern nicht, welche Terminals die Sequenz interpretieren. Der Code lässt sich zum Kopieren und Bearbeiten auswählen.
Colorama für die Kompatibilität mit Windows verwenden
Ob ANSI-Sequenzen dargestellt werden, hängt von der Terminalumgebung ab. Unter Windows kann colorama Anwendungen, die ANSI-Sequenzen ausgeben, bei der Arbeit mit unterstützten Konsolen helfen. Das Verhalten hängt jedoch weiterhin von der Konsole und dem Ausgabeziel ab. Installieren Sie das Paket in der Umgebung, in der das Skript ausgeführt wird, mit python -m pip install colorama (oder python3 -m pip install colorama); dies sind Shell-Befehle und keine Python-Anweisungen.
Das folgende vollständige Beispiel behandelt den Fall, dass das optionale Paket nicht installiert ist. Wenn es verfügbar ist, initialisiert es Colorama und kombiniert eine Vordergrundfarbe mit einem hellen Stil. Das Beispiel wurde hier nicht ausgeführt; für den vom Paket abhängigen Zweig muss Colorama installiert sein. Der Code und die darin angezeigten Bezeichnungen bleiben auf Englisch.
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 stellt Vordergrundkonstanten über Fore und Textstile über Style bereit. Style.RESET_ALL setzt aktive ANSI-Stile zurück; Fore.RESET setzt die Vordergrundfarbe zurück. Das tatsächliche Erscheinungsbild hängt vom Terminal ab.
Farben und andere Terminalstile zurücksetzen
Fügen Sie bei rohen ANSI-Sequenzen nach dem farbigen Text eine Rücksetzung wie \033[0m ein. Das Beispiel verwendet dafür eine benannte RESET-Konstante, sodass die Formatierung jeder Nachricht in sich abgeschlossen ist. Fehlt die Rücksetzung, kann die ausgewählte Farbe oder der Stil für spätere Ausgaben aktiv bleiben, bis eine andere Sequenz dies ändert oder das Terminal die Formatierung zurücksetzt.
Verwenden Sie mit Colorama Style.RESET_ALL, wenn der gesamte Formatierungszustand auf die Standardeinstellungen zurückgesetzt werden soll. Fore.RESET setzt nur die Vordergrundfarbe zurück, nicht alle anderen aktiven Stile. Wählen Sie die Rücksetzung passend zu den geänderten Attributen und setzen Sie sie direkt hinter den Text, der formatiert werden soll. So übernehmen nachfolgende Nachrichten und Eingabeaufforderungen keine unbeabsichtigte Terminalformatierung.