Lerne Coding
Farben im Terminal für Python mit Colorama
04.04.2020

Farbige Textausgabe auf der Konsole in Python

Inhaltsverzeichnis
[[TABLE OF CONTENTS]]
access_timeGeschätzte Lesezeit ca. Minuten

Irgendwann fangen wir in Python an, aufwendigere Anwendungen zu schreiben. Oft bleiben wir in Python dabei im Terminal bzw. in der Konsole. Die Übersicht über die einzelnen Spalten geht einfach verloren. je mehr Prints wir ausführen.

Natürlich fragt man sich, ob man das nicht anders lösen kann. Wie wärs mit farbigen Textausgaben im Terminal? Das habe ich zum Beispiel früher einmal für mein "Google Trends Terminal Checker" genutzt, um die Inhalte zu strukturieren und eine bessere Ausgabe zu erhalten.

Wie kommen Farben im Terminal zustande?

Die Farben kommen über sogenannte ANSI-Codes zustande. Darüber lassen sich nicht nur Texte farbig gestalten, es können auch Texte eine Hintergrundfarbe bekommen oder es kann etwas bold ausgezeichnet werden.

Zu beachten ist, dass unterschiedliche Terminals die Funktionalität der Farben nicht immer gleich interpretieren bzw. manche Typen in einem Terminal funktionieren und in einem anderen wiederum nicht.

Unter Windows, in der CMD, funktioniert diese Variante mit ANSI-Codes nicht. Module wie Colorama, was ich euch noch vorstellen werde, funktionieren aber problemlos unter Windows.

Einfaches Farbsystem

Es gibt ein einfaches Farbsystem. Das ist das folgende:

Thema der Tabelle "ANSI Farbcodes "

Die ANSI Farbcodes sind nützlich um Text in der Konsole Farbig darzustellen. Es gibt auch noch weitere ANSI Codes für weitere Funktionen.

Code Ergebniss Anwendungsbereich
\033[0m Reset Alle
\033[1m Bold Text
\033[4m Underline Text
\033[30m Schwarz Text
\033[31m Rot Text
\033[32m Grün Text
\033[33m Gelb Text
\033[34m Blau Text
\033[35m Pink Text
\033[36m Türkise Text
\033[37m Grau Text
\033[40m Schwarz Hintergrund
\033[41m Rot Hintergrund
\033[42m Grün Hintergrund
\033[43m Gelb Hintergrund
\033[44m Blau Hintergrund
\033[45m Pink Hintergrund
\033[46m Türkise Hintergrund
\033[47m Grau Hintergrund

Du kannst mit der folgenden Zeile auch Hintergrund und Textfarbe miteinander kombinieren:

\033[<text>;<hintergrund>m 

Eine Ausgabe eines roten Texts auf Grau könnte in Python zum Beispiel wie folgt aussehen. So können wir nun einen farbigen Print in Python machen.

print("\33[31;47m" + "Dein Text")

Nun wird alles nachfolgende im Terminal in der Farbe Rot auf Grau ausgegeben, zu beachten ist, dass, wenn ihr wieder die Farben zurücksetzen wollt, ihr das dann über den Reset-Code aus der obigen Tabelle tun könnt.

256 Farben - System

Das Farbsystem wird nicht von allen Konsolen und Terminals unterstützt, hat dafür aber einen erweiterten Farbraum von 256 Farben. Im Folgenden einmal der Code. Dort müsst ihr nur für <code> eure gewünschte Zahl einsetzen. Alternativ zu der 38 kann auch die 48 verwendet werden. Dann können auch hier diese 256 Farben als Hintergrund verwendet werden.

"\33[38;5;<code>m" # Text Farbe
"\33[48;5;<code>m" # Hintergrund Farbe

Bei kleinere Anwendungen, wo nicht viele Verschieden Farben und an sich wenige Print Befehle verwendet werden mag es sicher noch Nett sein die Farben selbst zu definieren in Variabel und dann immer entsprechend aufzurufen, oder sich eine Funktion zu schreiben mit dem Code. So muss man nur noch diese einsetzen. Eine Alternative ist es auf ein Fertiges Modul für das Thema Farbige Konsolen Ausgaben zurückzugreifen.

colorama-Modul für farbige Textausgaben in Python

Fangen wir mit dem Projekt an, das die meisten Sterne auf Github hat. Dies ist auch das beste, was den Umfang der unterstützten Plattformen angeht. Es funktioniert unter Linux, Mac und sogar Windows.

Github Repository Colorama

Die Insallation von Colorama ist einfach über den entsprechenden pip-Befehl möglich (mehr Informationen zum PIP Paketmanager):

pip install colorama

Der Aufruf sieht wie folgt aus. Wichtig ist die init()-Funktion für Windows-Systeme, damit das ANSI richtig interpretieret werden kann. Eine tolle Option, die bei Colorama möglich ist, ist das "autoreset". So muss nicht nach jedem Print ein Reset gemacht werden, so wie es bei der selbstgeschrieben Variante erstmal notwendig wäre.

from colorama import *
init(autoreset=True)

print(Fore.YELLOW + 'Ein Gelber Text')

print(Fore.YELLOW + Back.RED + 'Ein Gelber Text mit Rotem Hintergrund')

print("Normaler Text")

Die Ausgabe unserer farbigen Konsole würde wie folgt aussehen:

Beispiel Screenshot einer Farbigen Ausgabe
Beispiel Screenshot einer Farbigen Ausgabe

An der Zahl unterstützt Colorama 8 verschiedene Farben für Text und Hintergrund; das sind die folgenden:

  • BLACK
  • RED
  • GREEN
  • YELLOW
  • BLUE
  • MAGENTA
  • CYAN
  • WHITE
  • RESET (für Hintergrund und Text getrennt, falls kein autoreset verwendet wird - alternativ gibt es noch Style.RESET_ALL)

Fazit

Als Fazit zu Colorama lässt sich Folgendes sagen: Es unterstützt nicht viele Farben, aber die Farben, die es unterstützt, unterstützt es am besten, da es kein Zusatzpaket für den Windows Support benötigt.

Colorama ist das Modul mit dem besten Platform Support. Zuerst wollte ich euch noch weitere Alternativen vorstellen, allerdings hab ich mir diese angeschaut und bin von dem Support der Plattformen nicht erfreut; tolle Features, die aber nur in wenigen Terminals laufen.

Colorama hat guten Platform Support und eine ausreichende Farbpallette an Farben.

Hast du noch ein Modul gefunden, um die Farbe des Textes im Terminal anzupassen, was ich mir mal anschauen sollte? Hinterlasse mir gerne einen Kommentar!

Kommentare zum Artikel
Gregor schreibt ... Kommentar vom 20.05.2023
Feedback zum Artikel "Farbige Textausgabe auf der Konsole in Python" ...

Hallo Felix,

danke für deinen Beitrag über die "farbige" Gestaltung des Textes und Hintergrunds in der Konsole. Ich habe das Modul "Colorama" innerhalb von "Thonny" installiert - funktioniert. Merkwürdig, dass das nicht bei Python als Bulit-In implementiert ist, die Text- und Hintergrundfarbe in der Konsole setzen zu können. Ich kenne das von GW-BASIC, QBASIC und QuickBasic, mit dem "Color"-Befehl sehr einfach die Vorder- und Hintergrundfarbe im Textmodus bestimmen zu können. Mit "Small Basic" kann man die Farben auch ganz schnell im Text- und Grafikmodus setzen. Mir reichen vorerst die Farben von "Colorama" vollkommen aus. Damit habe ich erstmal genügend Möglichkeiten, die Ausgaben (outputs) etwas farbig gestalten zu können.

Herzliche Grüße ... Gregor :)

Antworten
Gregor
Antwort von Felix Schürmeyer Kommentar vom 20.05.2023
Re: Feedback zum Artikel "Farbige Textausgabe auf der Konsole in Python" ...

Guten Tag,

die Basic Sprachen sind viel mehr fürs Terminal gedacht als Python es ist aus meiner Perspektive. Letztlich brauchst du für die Basisfarben gar kein Modul. Den die Strings in der Tabelle können auch direkt genutz werden. Wie das Beispiel dort drunter zeigt. print("\33[31;47m" + "Dein Text")

Colorama unterstützt dich letztlich dadurch, dass du dir die Sequenzen nicht merken musst und die entsprechenden Variablen verwenden kannst.

Gruß, Felix

Felix Schürmeyer
Kommentar schreiben

Vom Autor Empfohlen
close