DevGang
Авторизоваться

Как использовать библиотеку Rich с Python 

В этой статье мы узнаем о мощной библиотеке для Python под названием Rich.

Rich — это библиотека Python для записи форматированного текста (с цветом и стилем) на терминал. Она позволяет отображать расширенный контент, такой как таблицы, markdown и код с подсветкой синтаксиса.

Итак, почему это полезно? Если вы не используете такой инструмент, как Rich, вывод вашего кода на терминал может быть немного скучным и трудным для понимания. Если вы хотите сделать его понятнее и красивее, вы, вероятно, захотите использовать Rich — и вы попали в нужное место, чтобы узнать, как это сделать.

Как установить Rich

Вы можете установить Rich с помощью pip:

pip install Rich

Чтобы узнать, на что способен Rich, вы можете набрать в терминале следующую команду:

python -m rich

Теперь вы можете видеть, что мы можем делать довольно много вещей с Rich. Давайте попробуем несколько из них, чтобы увидеть, как они работают.

Как вывести Rich на Python

Rich имеет возможность выделять выходные данные в соответствии с типом данных. Мы импортируем альтернативную функцию print из библиотеки Rich, которая принимает те же аргументы, что и встроенная функция print.

Чтобы не путаться со встроенной функцией print, мы будем импортировать print из библиотеки rich как rprint.

from rich import print as rprint

nums_list = [1, 2, 3, 4]
rprint(nums_list)

nums_tuple = (1, 2, 3, 4)
rprint(nums_tuple)

nums_dict = {'nums_list': nums_list, 'nums_tuple': nums_tuple}
rprint(nums_dict)

bool_list = [True, False]
rprint(bool_list)

Вывод:

Видите, как разные типы данных выделяются разными цветами? Это может нам сильно помочь при отладке.

Как выполнить расширенную проверку в Python

Если вы используете встроенную функцию help для просмотра документации библиотеки, вы увидите скучный вывод.

import rich

print(help(rich))

Вывод:

У Rich есть функция inspect(), которая может генерировать отчет о любом объекте Python. Это фантастическое средство отладки и хороший пример вывода, который может создать Rich.

from rich import inspect
import rich

inspect(rich)

Вывод:

Как оформить вашу консоль с помощью Rich

Для полного контроля над форматированием терминала Rich предлагает класс Console.

Давайте напишем функцию для объединения словарей Python.

from rich.console import Console

console = Console()


def merge_dict(dict_one, dict_two):
    merged_dict = dict_one | dict_two
    console.log(merged_dict, log_locals=True)


merge_dict({'id': 1}, {'name': 'Ashutosh'})

Вывод:

В приведенном выше примере мы использовали метод log, который предлагает те же возможности, что и печать, но добавляет некоторые функции, полезные для отладки работающего приложения.

Есть несколько других методов, таких как printprint_jsonoutrule, и так далее. Узнайте больше о них здесь.

Как использовать Tree в Rich

У Rich есть класс Tree, который может генерировать древовидное представление в терминале. Древовидное представление — отличный способ представления содержимого файловой системы или любых других иерархических данных. Каждая ветвь дерева может иметь метку, которая может быть текстовой или любой другой визуализируемой Rich.

Давайте посмотрим на пример, создав генеалогическое древо:

from rich.tree import Tree
from rich import print as rprint


tree = Tree("Family Tree")
tree.add("Mom")
tree.add("Dad")
tree.add("Brother").add("Wife")
tree.add("[red]Sister").add("[green]Husband").add("[blue]Son")

rprint(tree)

Вывод:

Создав экземпляр класса Tree, мы можем использовать этот метод add() для добавления к нему ветвей. Чтобы создать сложное дерево, вы просто используете метод add() для добавления к нему дополнительных ветвей. Обратите внимание на ветвь « Brother and Sister » в приведенном выше примере.

В официальной документации у нас есть файл tree.py, который выводит файловую структуру с помощью Tree. Вывод выглядит следующим образом:

Как отобразить индикатор выполнения с помощью Rich

Rich может отображать постоянно обновляемую информацию о состоянии длительно выполняемых задач, копиях файлов и т. д. Вы также можете настроить эту информацию. По умолчанию он предоставляет описание «задачи», индикатор выполнения, процент выполнения и ожидаемое оставшееся время.

Поддерживается несколько задач с богатым отображением хода выполнения, каждое из которых имеет полосу и статистику выполнения. Вы можете использовать это, чтобы отслеживать несколько заданий, которые выполняются в потоках или процессах.

Давайте сначала попробуем метод создания индикатора выполнения progress.track.

from rich.progress import track
from time import sleep


def process_data():
    sleep(0.02)


for _ in track(range(100), description='[green]Processing data'):
    process_data()

Вывод:

Если мы хотим записать время завершения выполнения конкретной задачи, мы можем использовать вместо этого console.status.

from rich.console import Console
from time import sleep

console = Console()

data = [1, 2, 3, 4, 5]
with console.status("[bold green]Fetching data...") as status:
    while data:
        num = data.pop(0)
        sleep(1)
        console.log(f"[green]Finish fetching data[/green] {num}")

    console.log(f'[bold][red]Done!')

Вы можете работать напрямую с классом Progress, если вам нужно несколько задач на дисплее или вы хотите настроить столбцы на дисплее прогресса. После создания объекта Progress используйте ( add_task()) для добавления задач и ( update_progress()) для обновления хода выполнения.

Класс Progress предназначен для использования в качестве менеджера контекста, автоматически запускающего и останавливающего отображение прогресса.

import time

from rich.progress import Progress

with Progress() as progress:

    task1 = progress.add_task("[red]Downloading...", total=100)
    task2 = progress.add_task("[green]Processing...", total=100)
    task3 = progress.add_task("[cyan]Installing...", total=100)

    while not progress.finished:
        progress.update(task1, advance=0.9)
        progress.update(task2, advance=0.6)
        progress.update(task3, advance=0.3)
        time.sleep(0.02)

Вывод:

Как отобразить столбцы в Python с помощью Rich

Rich может отображать текст или другие визуализируемые объекты Rich в аккуратных столбцах с помощью класса Columns. Для использования, создайте экземпляр Columns с итерацией объектов рендеринга и выведите его в консоли.

Вывод:

Как отображать таблицы в Python с помощью Rich

Класс Table предлагает множество способов вывода табличных данных на терминал. Этот класс имеет методы  add_column() и add_row() для добавления столбца и строки соответственно в экземпляр таблицы, созданный из класса Table.

Давайте создадим таблицу для нашего списка дел. В этой таблице будет три столбца – S.No., Задача и Статус.

from rich.console import Console
from rich.table import Table

table = Table(title="Todo List")

table.add_column("S. No.", style="cyan", no_wrap=True)
table.add_column("Task", style="magenta")
table.add_column("Status", justify="right", style="green")

table.add_row("1", "Buy Milk", "✅")
table.add_row("2", "Buy Bread", "✅")
table.add_row("3", "Buy Jam", "❌")

console = Console()
console.print(table)

Вывод:

Подведение итогов

В этом уроке мы узнали, как использовать Rich для украшения терминала. Есть много других функций, которые поддерживает Rich. Подробнее о них читайте в официальной документации.

Не стесняйтесь экспериментировать с исходным кодом этой статьи здесь.

Спасибо за чтение!

Источник:

#Python
Комментарии
Чтобы оставить комментарий, необходимо авторизоваться

Присоединяйся в тусовку

В подарок 100$ на счет при регистрации

Получить