🧩 Exercícios: Manipulação de Arquivos (Texto, CSV, JSON) e Context Managers
Spec Sistemas Com Python • Trilha Progressiva em 4 Níveis
🧭 Navegação Pedagógica
-
📖 Teoria do Capítulo 💻 Exemplos 📊 Slides 🧠 Quiz
🎯 Nível 1: Fundamentos
Problema 12.1 — Gerenciadores de Contexto Nativos (with open()) e Encodings UTF-8
Contexto: Gerenciadores de Contexto Nativos (with open()) e Encodings UTF-8 no contexto de Manipulação de Arquivos (Texto, CSV, JSON) e Context Managers.
Requisitos de Execução:
- Gravar e ler arquivos texto com
with open(..., 'w', encoding='utf-8')garantindo fechamento.
Resultado Esperado
Arquivo gravado e lido deterministicamente.
📤 Instruções de Entrega (Microsoft Teams)
- Salve o arquivo como:
Atividade_12_1_SeuNome - Envie na tarefa:
Atividade Cap 12 - Manipulação de Arquivos (Texto, CSV, JSON) e Context Managers
🔑 Gabarito de Código & Solução Comentada
with open("log.txt", "w", encoding="utf-8") as f:
f.write("AUDITORIA PYTHON: Sistema Operacional\n")
with open("log.txt", "r", encoding="utf-8") as f:
conteudo = f.read()
print("Lido do arquivo:", conteudo.strip())
🔍 Nível 2: Prática
Problema 12.2 — Serialização JSON com json.dump() e Manipulação com pathlib.Path
Contexto: Serialização JSON com json.dump() e Manipulação com pathlib.Path no contexto de Manipulação de Arquivos (Texto, CSV, JSON) e Context Managers.
Requisitos de Execução:
- Criar árvore de diretórios e gravar payload JSON estruturado utilizando
pathlib.Path.
Resultado Esperado
Arquivo JSON estruturado manipulado via métodos da biblioteca padrão pathlib.
📤 Instruções de Entrega (Microsoft Teams)
- Salve o arquivo como:
Atividade_12_2_SeuNome - Envie na tarefa:
Atividade Cap 12 - Manipulação de Arquivos (Texto, CSV, JSON) e Context Managers
🔑 Gabarito de Código & Solução Comentada
import json
from pathlib import Path
caminho = Path("configuracoes/app.json")
caminho.parent.mkdir(parents=True, exist_ok=True)
dados = {"servico": "PythonSystems", "porta": 8000, "debug": False}
caminho.write_text(json.dumps(dados, indent=2), encoding="utf-8")
print(f"Arquivo gravado em: {caminho.resolve()} (Tamanho: {caminho.stat().st_size} bytes)")
⚡ Nível 3: Integração
Problema 12.3 — Context Managers Customizados com contextlib.contextmanager
Contexto: Context Managers Customizados com contextlib.contextmanager no contexto de Manipulação de Arquivos (Texto, CSV, JSON) e Context Managers.
Requisitos de Execução:
- Criar gerenciador de contexto com
@contextmanagerpara medir tempo de execução de blocos de código.
Resultado Esperado
Tempo de execução medido e logado automaticamente na saída do bloco with.
📤 Instruções de Entrega (Microsoft Teams)
- Salve o arquivo como:
Atividade_12_3_SeuNome - Envie na tarefa:
Atividade Cap 12 - Manipulação de Arquivos (Texto, CSV, JSON) e Context Managers
🔑 Gabarito de Código & Solução Comentada
import time
from contextlib import contextmanager
from typing import Generator
@contextmanager
def cronometro(nome: str) -> Generator[None, None, None]:
t0 = time.perf_counter()
try:
yield
finally:
t1 = time.perf_counter()
print(f"Bloco '{nome}' executado em {(t1 - t0)*1000:.2f} ms")
with cronometro("Carga de Dados"):
total = sum(range(100_000))
🏆 Nível 4: Desafio Corporativo
Problema 12.4 — Manipulação de CSV de Alta Performance com csv.DictReader e DictWriter
Contexto: Manipulação de CSV de Alta Performance com csv.DictReader e DictWriter no contexto de Manipulação de Arquivos (Texto, CSV, JSON) e Context Managers.
Requisitos de Execução:
- Processar arquivo CSV massivo linha por linha com validação de colunas e gravação de saída filtrada.
Resultado Esperado
Processamento em streaming de CSV concluído com consumo desprezível de memória.
📤 Instruções de Entrega (Microsoft Teams)
- Salve o arquivo como:
Atividade_12_4_SeuNome - Envie na tarefa:
Atividade Cap 12 - Manipulação de Arquivos (Texto, CSV, JSON) e Context Managers
🔑 Gabarito de Código & Solução Comentada
import csv
import io
dados_csv = "nome,salario\nCarlos,5000\nAna,7000"
leitor = csv.DictReader(io.StringIO(dados_csv))
for linha in leitor:
print(f"Funcionario: {linha['nome']} | R$ {float(linha['salario']):.2f}")
| ⬅️ Voltar ao Índice de Exercícios | 📚 Sumário de Tópicos |