
Update badges in README translations to ensure consistency with README.md. Currently some translations show an outdated badge for supported Python versions, while others aren't consistent with the included badges.
16 KiB
English readme • 简体中文 readme • 正體中文 readme • Lengua española readme • Deutsche readme • Läs på svenska • 日本語 readme • 한국어 readme • Français readme • Schwizerdütsch readme • हिन्दी readme • Português brasileiro readme • Italian readme • Русский readme • Indonesian readme • فارسی readme • Türkçe readme • Polskie readme
Rich to bilbioteka Pythona dla tekstów rich i pięknego formatowania w terminalu.
Rich API sprawia, że dodanie kolorów i stylów do wyjścia terminala jest proste. Rich może również wyświetlać ładne tabele, paski postępu, markdown, podświetlenie składni kodu źródłowego, ślady wsteczne (tracebacki), i jeszcze więcej - od ręki.
Wprowadzenie wideo do Richa na calmcode.io stworzonym przez @fishnets88.
Zobacz co inni mówią o Richu.
Kompatybilność
Rich działa na systemach operacyjnych Linux, OSX i Windows. True color / emoji współgra z nowym Terminalem Windows, klasyczny terminal jest ograniczony do 16 kolorów. Rich wymaga Pythona 3.7 lub nowszego.
Rich działa z notatnikami Jupyter bez potrzeby dodatkowej konfiguracji.
Instalacja
Zainstaluj z użyciem pip
lub twojego ulubionego menedżera pakietów PyPI.
python -m pip install rich
Uruchom komendę poniżej aby przetestować wyjście Rich na twoim terminalu:
python -m rich
Rich Print
By bezproblemowo dodać wyjście rich do twojej aplikacji, możesz zaimportować metodę rich print, która ma tą samą sygnaturę jak wbudowana funkcja Pythona. Wypróbuj:
from rich import print
print("Hello, [bold magenta]World[/bold magenta]!", ":vampire:", locals())
Rich REPL
Rich może zostać zainstalowany w REPL, żeby wszystkie struktury danych były ładnie wypisane i podświetlone.
>>> from rich import pretty
>>> pretty.install()
Używanie konsoli
Dla większej kontroli nad bogatą zawartością terminala, zaimportuj i skonstruuj obiekt Console.
from rich.console import Console
console = Console()
Obiekt Console ma metodę print
, mającą celowo podobny interfejs do wbudowanej funkcji print
. Tu jest przykład użycia:
console.print("Hello", "World!")
Jak można się spodziewać wyświetli to "Hello World!"
do terminala. Warto zauważyć, że Rich automatycznie zawija tekst, aby mieścił się on w szerokości terminala.
Jest kilka możliwości dodania koloru i stylu do wyjścia terminala. Możesz ustawić styl dla całego wyjścia, dodając argument style
. Na przykład:
console.print("Hello", "World!", style="bold red")
Wyjście będzie wyglądało tak:
Jest to w porządku dla stylizacji jednej linijki tekstu. Dla dokładniejszej stylizacj, Rich wyświetla specjalny format markup podobny w składni do bbcode. Przykład poniżej:
console.print("Where there is a [bold cyan]Will[/bold cyan] there [u]is[/u] a [i]way[/i].")
Możesz użyć obiektu Console, aby wygenerować skomplikowane wyjście bez problemu. Więcej informacji odnośnie Console API w dokumentacji.
Rich Inspect
Rich ma funkcję inspect, która może produkować raporty na jakimkolwiek obiekcie Python, jak np. klasa, instancja, lub wbudowana funkcja.
>>> my_list = ["foo", "bar"]
>>> from rich import inspect
>>> inspect(my_list, methods=True)
Więcej informacji na temat funkcji inspect w dokumentacji.
Biblioteka Rich
Rich zawiera wiele wbudowanych renderables, które możesz użyć do stworzenia eleganckiego wyjścia w twoim CLI i pomóc ci w debugowaniu twojego kodu.
Kliknij poniższe nagłówki, żeby poznać detale:
Log
Obiekt Console ma metodę log()
, mającą podobny interfejs do print()
, ale wyświetla również kolumnę zawierającą aktualny czas oraz plik i linijkę, która wywołała powyższą metodę. Domyślnie Rich podświetla składnię dla struktur Pythona i ciągów repr. Jeśli zlogujesz kolekcję (czyli listę list
lub słownik dict
), Rich ją ładnie wypisze tak, żeby zmieściła się w dostępnym miejscu. Poniżej znajduje się przykład tych funkcji.
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()
Powyższy kod wyświetla poniższy tekst:
Istnieje argument log_locals
, który wyświetla tabelę zawierającą zmienne lokalne skąd wywołano metodę log.
Metoda log może być używana do logowania do terminala dla długo działających aplikacji takich jak serwery, ale jest również bardzo dobrą pomocą w debugowaniu.
Handler Logów
Możesz także użyć wbudowanej klasy Handler, aby sformatować i pokolorować wyjście z modułu logging Pythona. Przykład poniżej:
Emoji
Żeby wstawić emoji do wyjścia konsoli, umieść jego nazwę pomiędzy dwoma dwukropkami, na przykład:
>>> console.print(":smiley: :vampire: :pile_of_poo: :thumbs_up: :raccoon:")
😃 🧛 💩 👍 🦝
Korzystaj z tej funkcji rozsądnie.
Tabele
Rich może wyświetlać elastyczne tabele ze znakami unicode box. Istnieje duża różnorodność opcji formatowania, stylów, wyrównywania komórek itp.
Powyższa animacja została wygenerowana z table_movie.py w folderze examples.
Poniżej prostszy przykład:
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)
Ten kod wyświetla poniższy tekst:
Markup konsoli jest renderowany w ten sam sposób co print()
i log()
. Tak naprawdę wszystko co może być wyświetlone przez Richa może być zawarte w nagłówkach / wierszach (nawet inne tabele).
Klasa Table
jest na tyle mądra, że zmienia wielkość kolumn, aby zmieścić się w dostępnej szerokości terminala, zawijając tekst jeśli potrzeba. Poniżej ten sam przykład z mniejszą wielkością terminala:
Paski Postępu
Rich może renderować wiele niemrugających pasków postępu, aby można było śledzić długo trwające zadania.
Dla podstawowego użycia, owiń jakąkolwiek sekwencję w funkcji track
i iteruj nad wynikiem. Przykład poniżej:
from rich.progress import track
for step in track(range(100)):
do_step(step)
Nie jest trudniejsze dodanie wielu pasków postępu. Poniżej przykład z dokumentacji:
Kolumny mogą być skonfigurowane, tak aby wyświetlać jakiekolwiek detale chcesz. Wbudowane kolumny zawierają stopień ukończenia (w %), wielkość pliku, szybkość operacji i pozostały czas. Poniżej kolejny przykład pokazujący pobieranie w toku.
Możesz wypróbować tę funkcję samemu, patrz examples/downloader.py, który może pobierać wiele URLów jednocześnie, pokazując postęp.
Status
W sytuacjach, gdzie ciężko jest wyliczyć postęp, można użyć metody status, która wyświetli animację 'spinnera' i wiadomość. Animacja nie przeszkodzi ci w używaniu konsoli normalnie. Przykład poniżej:
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")
Generuje to następującą linijkę.
Animacje spinnera zostały zapożyczone z cli-spinners. Możesz wybrać spinnera określając parametr spinner
. Wykonaj następującą komendę, aby zobaczyć dostępne wartości:
python -m rich.spinner
To polecenie generuje następujący tekst:
Tree
Rich może renderować drzewo - tree zgodnie z wytycznymi. Drzewo jest idealne do wyświetlania struktury pliku, albo jakiekolwiek inne dane hierarchiczne.
Etykiety drzewa mogą być prostym tekstem albo czymkolwiek innym, co może wyświetlić Rich. Wykonaj poniższe polecenie dla demonstracji:
python -m rich.tree
To polecenie generuje następujący tekst:
W pliku tree.py znajduje się przykład skryptu wyświetlającego widok drzewa jakiegokolwiek folderu, podobnie do linuxowej komendy tree
.
Kolumny
Rich może wyświetlać zawartość w schludnych kolumnach z równą, lub optymalną szerokością. Poniżej znajduje się bardzo podstawowy klon komendy (MacOSa / Linuxa) ls
, która wyświetla zawartość folderu w kolumnach:
import os
import sys
from rich import print
from rich.columns import Columns
directory = os.listdir(sys.argv[1])
print(Columns(directory))
Poniższy zrzut ekranu prezentuje wyjście przykładu kolumn, wyświetlającego dane pobrane z API w kolumnach:
Markdown
Rich może renderować markdown i wykonuje niezłą pracę tłumaczenia formatowania do terminalu.
Aby wyrenderować markdown, zaimportuj klasę Markdown
i skonstruuj z ciągiem zawierającym kod markdown. Potem wydrukuj ją do konsoli. Przykład poniżej:
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)
Ten kod wyświetli tekst w stylu:
Podświetlanie kodu źródłowego
Rich używa biblioteki pygments, żeby zaimplementować podświetlanie kodu źródłowego. Użycie jest podobne do renderowania markdownu; skonstruuj obiekt Syntax
i wydrukuj go do konsoli. Przykład poniżej:
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)
Ten kod wyświetli:
Tracebacki
Rich może renderować piękne tracebacki, będące łatwiejsze do czytania i wyświetlają więcej kodu niż standardowe tracebacki Pythona. Można ustawić Richa jako domyślny handler tracebacków, żeby wszystkie niewyłapane wyjątki (błędy) były renderowane przez Richa. • Polskie readme