En este artículo, vamos a aprender cómo instalar y usar paquetes enriquecidos en Python .
RIch es un paquete de python para crear un increíble formateo y registro de terminales. Tiene varias características y funciones que pueden hacer que su aplicación se vea mejor e incluso agregar una nueva apariencia a su aplicación CLI. En este artículo, comprenderemos el proceso de instalación y el uso básico del paquete RICH en Python.
Instalación rica
Rich es un paquete de python, por lo que podemos instalarlo con el comando pip, puede usar directamente el comando pip install para instalar rich, pero si no quiere estropear su entorno global de python, puede usar un virtualenv para probar y jugar con un paquete de forma aislada. Entonces, primero configuraremos un entorno virtual con el paquete virtualenv
Configuración de un entorno virtual
Para configurar un entorno virtual siga el procedimiento explicado en el artículo Crear un entorno virtual utilizando venv .
Para configurar un entorno virtual nuevo, necesita el paquete virtualenv, así que instale el paquete globalmente con el comando:
pip install virtualenv
Esto instalará virtualenv en su entorno global de python, por lo que ahora podemos crear un entorno virtual en cualquier parte de nuestro sistema. Para crear un entorno virtual, utilizaremos el comando virtualenv seguido del nombre del entorno virtual. Asegúrese de estar en la ubicación deseada en su sistema, el siguiente comando creará un directorio en la ubicación actual.
virtualenv venv
Entonces, esto creará un nuevo entorno virtual en su carpeta, también necesitamos activar el entorno virtual. Para activar un entorno virtual necesita ejecutar un archivo llamado activar dependiendo de su Sistema Operativo.
Para Linux/mac OS:
source venv/bin/activate
Esto es todo lo que necesitamos para crear un entorno virtual, ahora podemos instalar cualquier paquete de Python en este entorno activado.
Usando pip para instalar rico
Ahora podemos instalar de forma segura cualquier paquete en nuestro entorno virtual activado, para instalar enriquecido necesitamos ejecutar el siguiente comando:
pip install rich
Esto instalará Rich, que es un paquete de Python. Para verificar que la instalación haya sido exitosa, puede ejecutar el siguiente comando con la ayuda del comando python -m seguido del nombre del paquete, en este caso es Rich.
python -m rich
Creación de una secuencia de comandos de Python para demostrar Rich
Ahora, dado que tenemos el paquete enriquecido instalado en el entorno virtual, podemos utilizar el paquete enriquecido en una secuencia de comandos de python y aprovechar sus estilos de formateo y registro en la E/S del terminal. Primero crearemos un script de hola word en python y demostraremos algunas otras funciones y operadores proporcionados por el paquete enriquecido.
Python3
from rich import print print("Hello, [bold green]Geeks[/bold green]!")
Aquí, estamos importando una función llamada imprimir del paquete enriquecido que acabamos de instalar. La función de impresión es diferente de la función de impresión regular proporcionada por python. Aunque técnicamente tiene el mismo propósito, puede hacer mucho más que una función de impresión normal. En el ejemplo anterior, la función de impresión tiene algunas cosas escritas que Python interpreta como un estilo de formato como [negrita verde] y [/negrita verde].
Estas dos etiquetas simplemente representan el inicio y el final del estilo proporcionado entre corchetes. Los estilos proporcionados en este ejemplo son negrita y verde. Puede elegir algunas opciones para la decoración del texto como se indica a continuación:
Los colores se pueden elegir de la lista proporcionada en los documentos con este enlace, los colores son 256 colores estándar junto con un formato de color de estilo CSS. La decoración como negrita, cursiva, subrayado, tachado, reverso, etc. se puede proporcionar en la lista de la documentación.
Creación de una pantalla informativa de tareas
Python3
from time import sleep from rich.console import Console console = Console() tasks = [f"Task {n}" for n in range(1, 8)] with console.status("[bold dark_orange]Finishing tasks...") as status: while tasks: task = tasks.pop(0) sleep(1) console.log(f"{task} complete")
El ejemplo anterior muestra el proceso de mostrar varias tareas en un bucle. Esto se hace con la API Wrapper de consola. La clase Consola proporciona algunas funcionalidades ampliadas específicamente para el contenido del terminal. Entonces, creamos una instancia de un objeto Consola y usamos el método de registro para mostrar el resultado. El método de estado se utiliza para mostrar el proceso en curso mientras se está en el bucle.
Para más opciones y funciones en la clase Console, puede consultar la documentación de la biblioteca Rich .
Tablas en Terminal con Rich
Incluso podemos mostrar tablas en un formato enriquecido con el paquete enriquecido. El paquete enriquecido tiene una forma de representar datos tabulares en la terminal con la clase Tables . Podemos construir algunas tablas de muestra para comprender los fundamentos de la representación de los datos tabulares en la consola.
Python3
from rich.align import Align from rich.console import Console from rich.live import Live from rich.table import Table TABLE_DATA = [ [ "[b white]DSA Course[/]: [i]Beginner[/]", "[magenta]$[/]10", "[green]Geeks for Geeks[/]", "15 hours", ], [ "[b white]DSA Course[/]: [i]Intermediate[/]", "[magenta]$[/]20", "[green]Geeks for Geeks[/]", "25 hours", ], [ "[b white]DSA Course[/]: [i]Advanced[/]", "[magenta]$[/]30", "[green]Geeks for Geeks[/]", "30 hours", ], [ "[b white]Operating System Fundamentals[/]", "[magenta]$[/]25", "[green]Geeks for Geeks[/]", "35 hours", ], ] console = Console() table = Table(show_footer=False) table_centered = Align.center(table) console.clear() with Live(table_centered, console=console, screen=False): table.add_column("Course Name", no_wrap=True) table.add_column("Price", no_wrap=True) table.add_column("Organization", no_wrap=True) table.add_column("Duration", no_wrap=True) for row in TABLE_DATA: table.add_row(*row) table_width = console.measure(table).maximum table.width = None
Entonces, aquí creamos un objeto de tabla con ajustes iniciales como pie de página y alineación. Los datos se almacenan primero como una lista de python, lo que significa que puede agregar o editar los datos dentro de sí mismo. Al usar la función Live, podemos crear una tabla en tiempo de ejecución agregando dinámicamente columnas y valores de fila con las funciones add_column y add_row en la clase de tabla.
Las filas o los datos reales se agregan después de insertar las columnas en los datos, al iterar sobre los valores definidos previamente de la lista TABLE_DATA, podemos analizar toda la columna de datos de la fila. La función de visualización en vivo se utiliza para mostrar la construcción en tiempo real de los registros del terminal y ayuda a visualizar el script.
Incluso podemos usar la opción de la consola para simplemente imprimir la tabla en lugar de mostrar la tabla en vivo mediante la función console.log.
consola.imprimir(tabla)
Representación del archivo Markdown
Incluso podemos representar contenido de descuento en la terminal con una extensión de descuento simple en la rica biblioteca de python. Aquí usaremos un archivo de rebajas simple para demostrar el funcionamiento de la renderización de rebajas enriquecidas. La muestra del código fuente se proporciona en la documentación y aquí debemos hacer algunos cambios para que funcione.
Python3
from rich.console import Console from rich.markdown import Markdown console = Console() with open("sample.md") as readme: markdown = Markdown(readme.read()) console.print(markdown)
A continuación se proporciona un archivo de descuento de muestra:
muestra.md
# Sample markdown file Text with some paragraph 2nd paragraph. *Italic*, **bold**, and `monospace`. Itemized lists look like: * this one * that one * the other one > Block quotes ------------ Here's a numbered list: 1. first item 2. second item 3. third item ```python n = 5 a = "GFG" for i in range(0, 3): print("Something") ``` ### An h3 header ### Tables can look like this: size material color ---- ------------ ------------ 9 leather brown 10 hemp canvas natural 11 glass transparent
Producción:
Aquí, crearemos una instancia de la clase de consola ya que la salida estará en la terminal/consola. A partir de entonces, podemos abrir el archivo Markdown en el repositorio local y analizarlo en la función Markdown que representará el contenido y, después de leer el contenido del archivo, podemos imprimir el contenido representado en la consola.
Árboles en Rich
También podemos crear una estructura en forma de árbol en la terminal usando Rich. Hay una clase de árbol en Rich para mostrar estructuras jerárquicas en la terminal, podemos crear una instancia de árbol simple usando la clase de árbol enriquecido.
Python3
from rich.tree import Tree from rich import print tree_example = Tree("Tree's Root Node") tree_example.add("Node 1") print(tree_example)
Producción:
La clase de árbol se crea con el método Tree importado del módulo rich.tree . Esto crea un Node raíz simple en el árbol; además, podemos agregar el Node al árbol usando la función de agregar asociada con el árbol. Usando este código simple, podemos crear árboles con más estilo usando la clase de consola en rich.
Python3
# rich-tree.py from rich.console import Console from rich.tree import Tree console = Console(width=100) tree = Tree("Programming Languages") python_tree = tree.add("[b green]Python[/]") python_tree.add("Numpy") python_tree.add("Pandas") python_tree.add("Django") python_tree.add("Flask") java_tree = tree.add("[b dark_orange3]Java[/]") java_tree.add("Spring") java_tree.add("Apache") frameworks = ["Express", "React", "Next", "Vue", "Angular"] js_tree = tree.add("[b yellow]Javascript[/]") for framework in frameworks: js_tree.add(framework) console.print(tree) CONSOLE_HTML_FORMAT = """\ <pre style="font-family:Menlo">{code}</pre> """
Producción:
Entonces, en este ejemplo, hemos usado la clase de la consola, agregando parámetros como el ancho que establecerá el ancho de la consola y el ancho de la pantalla de salida. A continuación, crearemos una instancia de una clase de árbol que creará un objeto de árbol y lo almacenará en la variable de árbol, podemos nombrarlo como queramos como lo hemos llamado ejemplo_árbol en el ejemplo anterior. Como se demostró anteriormente, podemos agregar Nodes al árbol, agregaremos el Node como un nuevo árbol, por lo que crearemos árboles anidados. Al asignar el valor devuelto de la función de suma para la variable de árbol, hemos agregado un nuevo Node, podemos agregar más Nodes.
Aquí, la variable de árbol es el árbol raíz que tiene Nodes como Python, Java y Javascript con instancias de clase de árbol como python_tree, java_tree y js_tree. Hemos creado python_tree con Nodes como Numpy, Pandas y Django. El java_tree tiene Nodes como Spring y Apache, y finalmente, tenemos Nodes js_tree como una lista de strings que agregamos dinámicamente usando un bucle for a. Para cada elemento en la lista «marcos», agregamos los Nodes en el js_tree.
Así es como podemos usar la clase de árbol en rico.
Barra de progreso en Rich
Incluso podemos agregar barras de progreso en la terminal usando rich. Los ricos también dan una clase para mostrar barras de progreso usando la clase de pista . La clase de seguimiento ofrece una vista de las barras de progreso hasta que se completa el ciclo y la tarea dada alcanza el 100 %.
Python3
from rich.progress import track from time import sleep for step in track(range(10)): sleep(1)
Producción:
Aquí, hemos demostrado un ejemplo básico de una barra de progreso simple para un ciclo que itera sobre un rango de 10 números y duerme por un segundo, por lo que vemos la transición de la barra de progreso.
Incluso podemos realizar la tarea de forma asincrónica y mostrar la barra de progreso mostrando el progreso del amor.
Python3
import time from rich.progress import Progress with Progress() as progress: task1 = progress.add_task("[red]Doing Task 1", total=100) task2 = progress.add_task("[blue]Doing Task 2", total=40) task3 = progress.add_task("[green]Doing Task 3", total=500) while not progress.finished: progress.update(task1, advance=0.1) progress.update(task2, advance=0.3) progress.update(task3, advance=0.6) time.sleep(0.01)
Producción:
Para mostrar algunas barras de progreso en el terminal, podemos agregar el uso de la función de progreso en la clase de progreso. Agregamos tareas que son barras de progreso individuales e incrementamos el progreso actual, hemos incluido el ciclo while para que podamos incrementar y realizar cualquier operación hasta que la barra de progreso se haya completado.
La barra de progreso se incrementa después de que se haya realizado la tarea aquí, la tarea simplemente está inactiva durante una fracción de segundo, pero puede ser cualquier operación, como obtener recursos de Internet o cualquier otra operación lógica en el programa.
Aquí, hemos agregado el parámetro total en la clase de progreso. Se mostrará la clase de progreso y la tarea se agrega mediante la función add_task, que agrega una barra de progreso en la consola. La función de agregar tareas toma el parámetro del nombre de la tarea y el total indica la cantidad de pasos que se deben completar para que el progreso alcance el 100%.