Englische Readme-Datei • 简体中文 Readme-Datei • 正體中文 Readme-Datei • Lengua española Readme-Datei • Deutsche Readme-Datei • Läs på svenska • 日本語 Readme-Datei • 한국어 Readme-Datei • Français Readme-Datei • Schwizerdütsch Readme-Datei • हिन्दी Readme • Portugiesische Readme-Datei • Italienische Readme-Datei • Russische Readme-Datei • Indonesische Readme-Datei • فارسی Readme-Datei • Türkische Readme-Datei • Polnische Readme-Datei
Rich ist eine Python-Bibliothek für Rich Text und schöne Formatierung im Terminal.
Die Rich API erleichtert das Hinzufügen von Farbe und Stil zur Terminalausgabe. Rich kann auch hübsche Tabellen, Fortschrittsbalken, Markdown, syntaxhervorgehobenen Quellcode, Tracebacks und mehr rendern – sofort einsatzbereit.
Eine Videoeinführung zu Rich finden Sie unter calmcode.io von @fishnets88.
Sehen Sie, was die Leute über Rich sagen.
Rich funktioniert mit Linux, macOS und Windows. True Color/Emoji funktioniert mit dem neuen Windows-Terminal, das klassische Terminal ist auf 16 Farben beschränkt. Rich erfordert Python 3.8 oder höher.
Rich funktioniert mit Jupyter-Notebooks, ohne dass eine zusätzliche Konfiguration erforderlich ist.
Installieren Sie mit pip
oder Ihrem bevorzugten PyPI-Paketmanager.
python -m pip install rich
Führen Sie Folgendes aus, um die Rich-Ausgabe auf Ihrem Terminal zu testen:
python -m rich
Um Ihrer Anwendung mühelos eine Rich-Ausgabe hinzuzufügen, können Sie die Rich-Print-Methode importieren, die dieselbe Signatur wie die integrierte Python-Funktion hat. Versuchen Sie Folgendes:
from rich import print
print ( "Hello, [bold magenta]World[/bold magenta]!" , ":vampire:" , locals ())
Rich kann in der Python-REPL installiert werden, sodass alle Datenstrukturen hübsch gedruckt und hervorgehoben werden.
>> > from rich import pretty
>> > pretty . install ()
Für mehr Kontrolle über umfangreiche Terminalinhalte importieren und erstellen Sie ein Konsolenobjekt.
from rich . console import Console
console = Console ()
Das Console-Objekt verfügt über eine print
, deren Schnittstelle absichtlich der integrierten print
ähnelt. Hier ein Anwendungsbeispiel:
console . print ( "Hello" , "World!" )
Wie zu erwarten ist, wird hier "Hello World!"
angezeigt. zum Terminal. Beachten Sie, dass Rich im Gegensatz zur integrierten print
Ihren Text so umbricht, dass er in die Terminalbreite passt.
Es gibt verschiedene Möglichkeiten, Ihrer Ausgabe Farbe und Stil hinzuzufügen. Sie können einen Stil für die gesamte Ausgabe festlegen, indem Sie ein style
hinzufügen. Hier ist ein Beispiel:
console . print ( "Hello" , "World!" , style = "bold red" )
Die Ausgabe sieht etwa wie folgt aus:
Das ist in Ordnung, um jeweils eine Textzeile zu formatieren. Für eine feinere Gestaltung rendert Rich ein spezielles Markup, dessen Syntax der von BBcode ähnelt. Hier ist ein Beispiel:
console . print ( "Where there is a [bold cyan]Will[/bold cyan] there [u]is[/u] a [i]way[/i]." )
Sie können ein Konsolenobjekt verwenden, um mit minimalem Aufwand anspruchsvolle Ausgaben zu generieren. Weitere Informationen finden Sie in den Konsolen-API-Dokumenten.
Rich verfügt über eine Prüffunktion, die einen Bericht zu jedem Python-Objekt erstellen kann, z. B. zu einer Klasse, einer Instanz oder einem integrierten Objekt.
>> > my_list = [ "foo" , "bar" ]
>> > from rich import inspect
>> > inspect ( my_list , methods = True )
Weitere Informationen finden Sie in den Inspektionsdokumenten.
Rich enthält eine Reihe integrierter Renderables, mit denen Sie elegante Ausgaben in Ihrer CLI erstellen und beim Debuggen Ihres Codes helfen können.
Klicken Sie auf die folgenden Überschriften, um Einzelheiten zu erfahren:
Das Console-Objekt verfügt über eine log()
Methode, die über eine ähnliche Schnittstelle wie print()
verfügt, aber auch eine Spalte für die aktuelle Zeit sowie die Datei und Zeile rendert, die den Aufruf getätigt hat. Standardmäßig führt Rich eine Syntaxhervorhebung für Python-Strukturen und Repr-Strings durch. Wenn Sie eine Sammlung protokollieren (z. B. ein Diktat oder eine Liste), druckt Rich sie so, dass sie in den verfügbaren Platz passt. Hier ist ein Beispiel für einige dieser Funktionen.
from rich . console import Console
console = Console ()
test_data = [
{ "jsonrpc" : "2.0" , "method" : "sum" , "params" : [ None , 1 , 2 , 4 , False , True ], "id" : "1" ,},
{ "jsonrpc" : "2.0" , "method" : "notify_hello" , "params" : [ 7 ]},
{ "jsonrpc" : "2.0" , "method" : "subtract" , "params" : [ 42 , 23 ], "id" : "2" },
]
def test_log ():
enabled = False
context = {
"foo" : "bar" ,
}
movies = [ "Deadpool" , "Rise of the Skywalker" ]
console . log ( "Hello from" , console , "!" )
console . log ( test_data , log_locals = True )
test_log ()
Das Obige erzeugt die folgende Ausgabe:
Beachten Sie das Argument log_locals
, das eine Tabelle mit den lokalen Variablen ausgibt, in denen die Protokollmethode aufgerufen wurde.
Die Protokollmethode kann für die Protokollierung am Terminal für lang laufende Anwendungen wie Server verwendet werden, ist aber auch eine sehr schöne Debugging-Hilfe.
Sie können auch die integrierte Handler-Klasse verwenden, um die Ausgabe des Python-Protokollierungsmoduls zu formatieren und einzufärben. Hier ist ein Beispiel für die Ausgabe:
Um ein Emoji in die Konsolenausgabe einzufügen, platzieren Sie den Namen zwischen zwei Doppelpunkten. Hier ist ein Beispiel:
>> > console . print ( ":smiley: :vampire: :pile_of_poo: :thumbs_up: :raccoon:" )
? ? ? ? ?
Bitte nutzen Sie diese Funktion mit Bedacht.
Rich kann flexible Tabellen mit Unicode-Boxzeichen rendern. Es gibt eine große Auswahl an Formatierungsoptionen für Rahmen, Stile, Zellenausrichtung usw.
Die obige Animation wurde mit table_movie.py im Beispielverzeichnis generiert.
Hier ist ein einfacheres Tabellenbeispiel:
from rich . console import Console
from rich . table import Table
console = Console ()
table = Table ( show_header = True , header_style = "bold magenta" )
table . add_column ( "Date" , style = "dim" , width = 12 )
table . add_column ( "Title" )
table . add_column ( "Production Budget" , justify = "right" )
table . add_column ( "Box Office" , justify = "right" )
table . add_row (
"Dec 20, 2019" , "Star Wars: The Rise of Skywalker" , "$275,000,000" , "$375,126,118"
)
table . add_row (
"May 25, 2018" ,
"[red]Solo[/red]: A Star Wars Story" ,
"$275,000,000" ,
"$393,151,347" ,
)
table . add_row (
"Dec 15, 2017" ,
"Star Wars Ep. VIII: The Last Jedi" ,
"$262,000,000" ,
"[bold]$1,332,539,889[/bold]" ,
)
console . print ( table )
Dies erzeugt die folgende Ausgabe:
Beachten Sie, dass Konsolen-Markup auf die gleiche Weise gerendert wird wie print()
und log()
. Tatsächlich kann alles, was von Rich dargestellt werden kann, in die Kopfzeilen/Zeilen (sogar andere Tabellen) aufgenommen werden.
Die Table
-Klasse ist intelligent genug, um die Größe von Spalten an die verfügbare Breite des Terminals anzupassen und den Text nach Bedarf umzubrechen. Hier ist das gleiche Beispiel, wobei das Terminal kleiner ist als in der Tabelle oben:
Rich kann mehrere flimmerfreie Fortschrittsbalken rendern, um lang laufende Aufgaben zu verfolgen.
Für den einfachen Gebrauch schließen Sie eine beliebige Sequenz in die track
-Funktion ein und iterieren Sie über das Ergebnis. Hier ist ein Beispiel:
from rich . progress import track
for step in track ( range ( 100 )):
do_step ( step )
Es ist nicht viel schwieriger, mehrere Fortschrittsbalken hinzuzufügen. Hier ist ein Beispiel aus den Dokumenten:
Die Spalten können so konfiguriert werden, dass sie alle gewünschten Details anzeigen. Integrierte Spalten umfassen den Fertigstellungsgrad in Prozent, die Dateigröße, die Dateigeschwindigkeit und die verbleibende Zeit. Hier ist ein weiteres Beispiel, das einen laufenden Download zeigt:
Um dies selbst auszuprobieren, sehen Sie sich „examples/downloader.py“ an, das mehrere URLs gleichzeitig herunterladen und dabei den Fortschritt anzeigen kann.
In Situationen, in denen es schwierig ist, den Fortschritt zu berechnen, können Sie die Statusmethode verwenden, die eine „Spinner“-Animation und eine Meldung anzeigt. Die Animation hindert Sie nicht daran, die Konsole wie gewohnt zu verwenden. Hier ist ein Beispiel:
from time import sleep
from rich . console import Console
console = Console ()
tasks = [ f"task { n } " for n in range ( 1 , 11 )]
with console . status ( "[bold green]Working on tasks..." ) as status :
while tasks :
task = tasks . pop ( 0 )
sleep ( 1 )
console . log ( f" { task } complete" )
Dies erzeugt die folgende Ausgabe im Terminal.
Die Spinner-Animationen wurden von Cli-Spinnern ausgeliehen. Sie können einen Spinner auswählen, indem Sie den spinner
-Parameter angeben. Führen Sie den folgenden Befehl aus, um die verfügbaren Werte anzuzeigen:
python -m rich.spinner
Der obige Befehl generiert die folgende Ausgabe im Terminal:
Rich kann einen Baum mit Hilfslinien rendern. Ein Baum eignet sich ideal zum Anzeigen einer Dateistruktur oder anderer hierarchischer Daten.
Die Beschriftungen des Baums können einfacher Text oder alles andere sein, was Rich darstellen kann. Führen Sie für eine Demonstration Folgendes aus:
python -m rich.tree
Dies erzeugt die folgende Ausgabe:
Im Beispiel „tree.py“ finden Sie ein Skript, das eine Baumansicht eines beliebigen Verzeichnisses anzeigt, ähnlich dem Linux-Befehl „ tree
.
Rich kann Inhalte in übersichtlichen Spalten mit gleicher oder optimaler Breite rendern. Hier ist ein sehr einfacher Klon des ls
-Befehls (MacOS/Linux), der eine Verzeichnisliste in Spalten anzeigt:
import os
import sys
from rich import print
from rich . columns import Columns
directory = os . listdir ( sys . argv [ 1 ])
print ( Columns ( directory ))
Der folgende Screenshot ist die Ausgabe des Spaltenbeispiels, das von einer API abgerufene Daten in Spalten anzeigt:
Rich kann Markdown rendern und übersetzt die Formatierung angemessen auf das Terminal.
Um Markdown zu rendern, importieren Sie die Markdown
Klasse und erstellen Sie sie mit einer Zeichenfolge, die Markdown-Code enthält. Drucken Sie es dann auf der Konsole aus. Hier ist ein Beispiel:
from rich . console import Console
from rich . markdown import Markdown
console = Console ()
with open ( "README.md" ) as readme :
markdown = Markdown ( readme . read ())
console . print ( markdown )
Dadurch wird eine Ausgabe wie die folgende erzeugt:
Rich verwendet die Pygments-Bibliothek, um Syntaxhervorhebung zu implementieren. Die Verwendung ähnelt dem Rendern von Markdown. Erstellen Sie ein Syntax
Objekt und geben Sie es auf der Konsole aus. Hier ist ein Beispiel:
from rich . console import Console
from rich . syntax import Syntax
my_code = '''
def iter_first_last(values: Iterable[T]) -> Iterable[Tuple[bool, bool, T]]:
"""Iterate and generate a tuple with a flag for first and last value."""
iter_values = iter(values)
try:
previous_value = next(iter_values)
except StopIteration:
return
first = True
for value in iter_values:
yield first, False, previous_value
first = False
previous_value = value
yield first, True, previous_value
'''
syntax = Syntax ( my_code , "python" , theme = "monokai" , line_numbers = True )
console = Console ()
console . print ( syntax )
Dadurch wird die folgende Ausgabe erzeugt:
Rich kann schöne Tracebacks rendern, die einfacher zu lesen sind und mehr Code anzeigen als Standard-Python-Tracebacks. Sie können Rich als Standard-Traceback-Handler festlegen, sodass alle nicht abgefangenen Ausnahmen von Rich gerendert werden.
So sieht es unter OSX aus (ähnlich unter Linux):
Alle Rich-Renderables nutzen das Konsolenprotokoll, mit dem Sie auch Ihre eigenen Rich-Inhalte implementieren können.
Siehe auch Rich CLI für eine von Rich unterstützte Befehlszeilenanwendung. Syntaxhervorhebungscode, Render-Markdown, Anzeige von CSVs in Tabellen und mehr direkt über die Eingabeaufforderung.
Sehen Sie sich auch Richs Schwesterprojekt Textual an, mit dem Sie anspruchsvolle Benutzeroberflächen im Terminal erstellen können.