Especialização em Sistemas com Python & POO com Type Hints • Capítulo 12


🗺️ Mapa Conceitual do Tópico

flowchart LR
    A["pathlib.Path('dados.csv')"] -->|"with open(..., 'r', encoding='utf-8')"| B["csv.DictReader"]
    B -->|Transformação e Filtro| C["Processamento em Memória"]
    C -->|"with open(..., 'w', encoding='utf-8')"| D["json.dump('consolidado.json')"]
    
    style A fill:#e1f5fe,stroke:#03a9f4,stroke-width:2px
    style B fill:#fff3e0,stroke:#ff9800,stroke-width:2px
    style C fill:#ede7f6,stroke:#7e57c2,stroke-width:2px
    style D fill:#e8f5e9,stroke:#4caf50,stroke-width:2px

📁 1. Manipulação Moderna com pathlib.Path e with

  • pathlib.Path: Interface orientada a objetos para caminhos de arquivos e pastas no Windows.
  • Context Managers (with): Garante fechamento automático de arquivos e liberação de descritores do sistema operacional.
  • Codificação Explícita: Sempre especifique encoding="utf-8" para evitar erros de caracteres no Windows.

💻 Exemplo Prático e Tipado

"""
exemplo_12_trabalhando_com_arquivos.py - Pipeline de Arquivos CSV e JSON
"""

import csv
import json
from pathlib import Path


def processar_faturamento_csv(caminho_csv: Path) -> dict[str, float]:
    total_por_categoria = {}
    with open(caminho_csv, mode="r", encoding="utf-8") as f:
        leitor = csv.DictReader(f, delimiter=";")
        for linha in leitor:
            cat = linha["categoria"]
            val = float(linha["valor"])
            total_por_categoria[cat] = total_por_categoria.get(cat, 0.0) + val
    return total_por_categoria


if __name__ == "__main__":
    arquivo_mock = Path("vendas_temp.csv")
    arquivo_mock.write_text("categoria;valor\nHardware;1500.0\nSoftware;300.0\nHardware;800.0", encoding="utf-8")

    totais = processar_faturamento_csv(arquivo_mock)
    print("Consolidação por Categoria:")
    print(json.dumps(totais, indent=2))
    arquivo_mock.unlink()

🔗 Recursos Pedagógicos do Capítulo 12

Recurso Didático Finalidade Link de Acesso
📊 Slides de Aula Apresentação visual interativa com Dark Mode e suporte a teclado Ver Slides
🧠 Quiz Formativo Teste interativo de fixação com feedback imediato por alternativa Fazer Quiz
💻 Exemplos de Código Demonstrações funcionais com Type Hints e saída no console Ver Exemplos
🧩 Exercícios em 4 Níveis Lista progressiva de fixação com gabarito em bloco colapsável Resolver Exercícios

🛡️ Capítulo Anterior 📚 Sumário de Tópicos 🗄️ Próximo Capítulo