// aula 05 · Python · Bibliotecas

Rich no Python:
Cores, Emojis, Tabelas
e Debug Muito Mais Bonitos


O que é a biblioteca Rich?

🎨

Rich — terminal bonito, de verdade

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

📦
$ pip install rich
Funciona no Python 3.6.3+ · Windows, macOS e Linux
verificando a 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

Sintaxe

Como funciona o markup

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.

Estilos disponíveis

O que você pode usar

bold · italic · underline · strike · blink · cores por nome (red, green, blue…) · cores hexadecimais · cor de fundo com on.

exemplos de markup
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!")
output no terminal
Erro! Sucesso! Info
Negrito e itálico e os dois
sublinhado e tachado
 ALERTA  mensagem importante
cor personalizada em hex
Arquivo dados.csv salvo!

2 · Emojis no terminal

😄

Emojis pelo nome — sem precisar copiar

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.

usando emojis com rich
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 🌍")
output no terminal
🚀 Iniciando o sistema...
✅ Tarefa concluída
⚠️ Atenção ao limite de memória
🐛 Bug encontrado na linha 42
🐍 Python é incrível 🔥
Olá 👋 mundo 🌍
📌

Dica — como descobrir o nome do emoji

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

rich.table

Classe Table

Cria tabelas formatadas com bordas, alinhamento, estilos por coluna e cabeçalhos coloridos. Muito mais legível que formatar manualmente com espaços.

Principais opções

Customização

title — título da tabela · style — cor da borda · header_style — estilo do cabeçalho · show_lines — linhas entre linhas · box — estilo da caixa.

criando uma tabela com rich
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)
output no terminal
Linguagens de Programação
Linguagem Paradigma Ano Status
Python Multiparadigma 1991 ✔ Ativa
Java OO 1995 ✔ Ativa
Pascal Procedural 1970 ~ Legado
COBOL Procedural 1959 ✖ Legado
4 rows · rich.table.Table

4 · Barra de progresso — Progress

Progress — feedback visual em loops

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.

barra de progresso com rich
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)
Baixando...      ━━━━━━━━━━━━━━━━━━━━
72% · 0:00:08 restante
Processando... ━━━━━━━━━━━━━━━━━━━━
48% · 0:00:14 restante
Salvando...     ━━━━━━━━━━━━━━━━━━━━
91% · 0:00:01 restante

5 · Panel e Rule — delimitando seções

Panel

Caixas decoradas

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.

Rule

Linha separadora

Cria uma linha horizontal com texto opcional no centro. Útil para separar seções no output de scripts longos.

panel e rule
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]"))
Início do relatório
STATUS
Tudo funcionando corretamente!
Perfil
Usuário: lucilia
Nível:    avançado
Pontos:   1.250
Fim do relatório

6 · Inspect — inspecionando objetos

🔍

inspect() — documentação interativa no terminal

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.

inspecionando objetos com rich
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)
🔍 <class 'Caneta'> instance
cor = 'azul' str
escrever = <bound method Caneta.escrever> method
__class__ = <class 'Caneta'> type
__dict__ = {'cor': 'azul'} dict

7 · Traceback bonito — debug facilitado

Problema

Traceback padrão do Python

O traceback padrão é texto puro, sem cor, difícil de ler em erros aninhados. Você perde tempo tentando encontrar a linha do problema.

Solução

Traceback do Rich

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.

ativando o traceback do rich
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!
⚠ Traceback (most recent call last)
File main.py, line 8, in <module>
dividir(10, 0)
File main.py, line 5, in dividir
5 │ return a / b
a = 10   b = 0
ZeroDivisionError: division by zero

8 · Logging com Rich

📋

console.log() — logs com timestamp e localização

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.

console.log com rich
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)
[14:32:01] DEBUG Iniciando conexão... main.py:5
[14:32:01] INFO  Conexão estabelecida main.py:6
[14:32:02] WARN  Memória acima de 80% main.py:7
[14:32:03] ERROR Falha ao gravar arquivo main.py:8
[14:32:03] Dados do usuário: {'usuario': 'lucilia', 'nivel': 3}

Resumo — o que o Rich oferece

print()

Markup

Cores, negrito, itálico, sublinhado e fundo com sintaxe [estilo]texto[/estilo].

Table

Tabelas

Tabelas formatadas com bordas, alinhamento e estilos por coluna.

Progress

Progresso

Barras animadas com percentual, tempo restante e velocidade.

Panel / Rule

Painéis

Caixas decoradas e linhas separadoras para organizar o output.

inspect()

Inspeção

Visualiza atributos e métodos de qualquer objeto Python.

Traceback

Debug

Erros com syntax highlight, linha exata e valor das variáveis.

console.log()

Logging

Logs com timestamp automático e referência ao arquivo/linha.

:emoji:

Emojis

Emojis pelo nome entre dois pontos, sem precisar copiar o caractere.


📌

Lembrete importante

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.