// aula 05 · Python · Bibliotecas
O que é a biblioteca Rich?
Rich é uma biblioteca Python criada por Will McGugan que transforma o terminal em algo visualmente rico. Com ela você consegue imprimir texto com cores, estilos, emojis, criar tabelas formatadas, barras de progresso, painéis decorados e até rastreamentos de erros muito mais legíveis — tudo direto no terminal.
Antes do Rich: print("erro: algo deu errado") — texto simples, difícil de ler.
Depois do Rich: output colorido, bem estruturado e fácil de debugar. ✨
Instalação
from rich import print # substitui o print padrão from rich.console import Console # objeto principal do Rich console = Console() console.print("[bold green]Rich instalado com sucesso![/bold green] 🎉")
1 · Print com markup — cores e estilos
O Rich usa uma sintaxe parecida com HTML, mas dentro de strings Python. Você envolve o texto com [estilo] e fecha com [/estilo]. É possível combinar múltiplos estilos.
bold · italic · underline · strike · blink · cores por nome (red, green, blue…) · cores hexadecimais · cor de fundo com on.
from rich import print # Cores por nome print("[red]Erro![/red] [green]Sucesso![/green] [blue]Info[/blue]") # Negrito e itálico print("[bold]Negrito[/bold] e [italic]itálico[/italic] e [bold italic]os dois[/bold italic]") # Sublinhado e tachado print("[underline]sublinhado[/underline] e [strike]tachado[/strike]") # Cor de fundo (background) print("[bold white on red] ALERTA [/bold white on red] mensagem importante") # Cor hexadecimal print("[#ff79c6]cor personalizada em hex[/#ff79c6]") # Combinando tudo print("[bold green]✔[/bold green] Arquivo [italic cyan]dados.csv[/italic cyan] salvo!")
2 · Emojis no terminal
O Rich permite inserir emojis usando o nome deles entre dois pontos, no estilo :nome_do_emoji:. Funciona como atalho — você não precisa copiar o caractere, só digitar o nome.
from rich import print # Emojis pelo nome (entre :dois_pontos:) print(":rocket: Iniciando o sistema...") print(":white_check_mark: Tarefa concluída") print(":warning: Atenção ao limite de memória") print(":bug: Bug encontrado na linha 42") # Combinando emoji + markup print("[bold green]:snake: Python[/bold green] é incrível :fire:") # Emoji direto no texto (também funciona) print("Olá 👋 mundo 🌍")
Consulte emojipedia.org ou a documentação do Rich em rich.readthedocs.io/emoji. O nome é sempre em inglês com underscores: :thumbs_up:, :party_popper:, :red_heart:.
3 · Tabelas — Table
Cria tabelas formatadas com bordas, alinhamento, estilos por coluna e cabeçalhos coloridos. Muito mais legível que formatar manualmente com espaços.
title — título da tabela · style — cor da borda · header_style — estilo do cabeçalho · show_lines — linhas entre linhas · box — estilo da caixa.
from rich.console import Console from rich.table import Table console = Console() # Criando a tabela tabela = Table(title="Linguagens de Programação", style="blue") # Adicionando colunas tabela.add_column("Linguagem", style="cyan bold") tabela.add_column("Paradigma", style="magenta") tabela.add_column("Ano", style="yellow", justify="right") tabela.add_column("Status", justify="center") # Adicionando linhas tabela.add_row("Python", "Multiparadigma", "1991", "[green]✔ Ativa[/green]") tabela.add_row("Java", "OO", "1995", "[green]✔ Ativa[/green]") tabela.add_row("Pascal", "Procedural", "1970", "[yellow]~ Legado[/yellow]") tabela.add_row("COBOL", "Procedural", "1959", "[red]✖ Legado[/red]") console.print(tabela)
| Linguagem | Paradigma | Ano | Status |
|---|---|---|---|
| Python | Multiparadigma | 1991 | ✔ Ativa |
| Java | OO | 1995 | ✔ Ativa |
| Pascal | Procedural | 1970 | ~ Legado |
| COBOL | Procedural | 1959 | ✖ Legado |
4 · Barra de progresso — Progress
A classe Progress cria barras de progresso animadas para qualquer loop ou tarefa demorada. Mostra percentual, tempo restante e velocidade — tudo automaticamente. Ideal para scripts de processamento de arquivos, downloads ou treinamento de modelos.
from rich.progress import Progress import time with Progress() as progress: tarefa1 = progress.add_task("[cyan]Baixando...", total=100) tarefa2 = progress.add_task("[green]Processando...", total=100) tarefa3 = progress.add_task("[red]Salvando...", total=100) while not progress.finished: progress.update(tarefa1, advance=0.5) progress.update(tarefa2, advance=0.3) progress.update(tarefa3, advance=0.9) time.sleep(0.02)
5 · Panel e Rule — delimitando seções
Envolve qualquer conteúdo em uma caixa com borda. Aceita título, subtítulo e estilos de borda diferentes. Ótimo para destacar resultados ou mensagens importantes.
Cria uma linha horizontal com texto opcional no centro. Útil para separar seções no output de scripts longos.
from rich.console import Console from rich.panel import Panel from rich.rule import Rule console = Console() # Rule — linha com título console.print(Rule("[bold cyan]Início do relatório[/bold cyan]")) # Panel simples console.print(Panel("Tudo funcionando corretamente!", title="[green]STATUS[/green]", border_style="green")) # Panel com markup interno console.print(Panel( "[bold]Usuário:[/bold] lucilia\n[bold]Nível:[/bold] [yellow]avançado[/yellow]\n[bold]Pontos:[/bold] [cyan]1.250[/cyan]", title="Perfil", border_style="blue" )) # Rule — linha de encerramento console.print(Rule("[bold cyan]Fim do relatório[/bold cyan]"))
6 · Inspect — inspecionando objetos
A função inspect() do Rich exibe todos os atributos e métodos de qualquer objeto Python, com tipos, valores e docstrings. É como um help() muito mais legível e visual — ótimo para explorar bibliotecas novas.
from rich import inspect lista = [1, 2, 3] inspect(lista, methods=True) # mostra métodos também # Inspecionando uma instância própria class Caneta: def __init__(self, cor): self.cor = cor def escrever(self): print("escrevendo") c = Caneta("azul") inspect(c)
7 · Traceback bonito — debug facilitado
O traceback padrão é texto puro, sem cor, difícil de ler em erros aninhados. Você perde tempo tentando encontrar a linha do problema.
Mostra o código-fonte com syntax highlight, indica exatamente a linha do erro, destaca a variável problemática e formata o nome da exceção claramente.
from rich.traceback import install install() # substitui o traceback padrão do Python — coloque no topo do script # A partir daqui, qualquer exceção será exibida com o estilo Rich def dividir(a, b): return a / b dividir(10, 0) # → ZeroDivisionError estilizado!
8 · Logging com Rich
O método console.log() do Rich funciona como o print(), mas adiciona automaticamente o horário e o nome do arquivo + linha de onde foi chamado. Perfeito para debugar sem precisar de um framework de logging completo.
from rich.console import Console console = Console() console.log("[blue]DEBUG[/blue] Iniciando conexão...") console.log("[green]INFO[/green] Conexão estabelecida") console.log("[yellow]WARN[/yellow] Memória acima de 80%") console.log("[red]ERROR[/red] Falha ao gravar arquivo") # Também aceita objetos diretamente dados = {"usuario": "lucilia", "nivel": 3} console.log("Dados do usuário:", dados)
Resumo — o que o Rich oferece
Cores, negrito, itálico, sublinhado e fundo com sintaxe [estilo]texto[/estilo].
Tabelas formatadas com bordas, alinhamento e estilos por coluna.
Barras animadas com percentual, tempo restante e velocidade.
Caixas decoradas e linhas separadoras para organizar o output.
Visualiza atributos e métodos de qualquer objeto Python.
Erros com syntax highlight, linha exata e valor das variáveis.
Logs com timestamp automático e referência ao arquivo/linha.
Emojis pelo nome entre dois pontos, sem precisar copiar o caractere.
O Rich é uma biblioteca externa — precisa ser instalada com pip install rich. Ela não vem com o Python por padrão. Ao distribuir seu projeto, adicione rich ao seu requirements.txt para que outros também possam instalar.