Capítulo 4 — Scripts e formatos de dados
Mapa da aula
Aula 04 publicada. Mapa, exemplo, EX013.
flowchart TD
N0["4.1 Resumo dos reportes"]
N1["Laboratório — Resumo semanal dos reportes a partir d"]
N2["4.2 Configuração em JSON"]
N3["4.3 Evitar dados pessoais"]
N4["Síntese"]
N0 --> N1 --> N2 --> N3 --> N4
N4 --> EX["Exemplo resolvido"]
EX --> Q["Exercício EX013"]
Desenho lógico
flowchart LR
N0["4.1 Resumo dos reportes"]
N1["Laboratório — Resumo semanal dos reportes a partir d"]
N2["4.2 Configuração em JSON"]
N3["4.3 Evitar dados pessoais"]
N4["Síntese"]
N0 --> N1 --> N2 --> N3 --> N4 --> Q["EX013"]
[4.1 Resumo dos reportes]
|
v
[Laboratório — Resumo semanal dos reportes a partir d]
|
v
[4.2 Configuração em JSON]
|
v
[4.3 Evitar dados pessoais]
|
v
[Síntese]
|
v
[Exemplo resolvido] --> [Exercício EX013]
Objetivos de aprendizagem
Você vai (1) escrever um script para resumir reportes a partir de um arquivo CSV; (2) usar JSON para configuração; (3) evitar guardar dados pessoais sem necessidade.
4.1 Resumo dos reportes
Assim que existe uma caixa postal de reporte, Priya escreve um script em Python que lê uma exportação semanal em CSV com data, centro de distribuição, categoria e veredito, e imprime as contagens por centro e por categoria. Ela usa o módulo csv do Python para que as vírgulas dentro dos campos sejam tratadas corretamente. Testa o script num arquivo pequeno cujos totais ela conhece. O resumo substitui uma contagem manual que tomava uma hora por semana do líder de TI e muitas vezes tinha erros, liberando tempo para responder a quem reporta. O líder de TI confere a primeira saída.
Laboratório — Resumo semanal dos reportes a partir do CSV
# Weekly report summary from CSV (synthetic).
import csv, io, json
cfg = json.loads('{"depots": ["North", "South", "East"]}')
data = "date,depot,category,verdict\n" + "".join(f"2026-10-0{1 + i % 5},{d},{c},{v}\n" for i, (d, c, v) in enumerate(
[("North", "fake carrier", "malicious")] * 7 + [("North", "newsletter", "harmless")] * 5 +
[("South", "fake invoice", "malicious")] * 4 + [("South", "other", "harmless")] * 3 + [("East", "fake carrier", "malicious")] * 5))
counts = {d: 0 for d in cfg["depots"]}
for row in csv.DictReader(io.StringIO(data)): counts[row["depot"]] += 1
print(counts, "total", sum(counts.values()))
Execute com python3 lab_weekly.py. Saída verificada:
{'North': 12, 'South': 7, 'East': 5} total 24
4.2 Configuração em JSON
Priya guarda as configurações, como os nomes dos centros de distribuição e os rótulos das categorias, num arquivo JSON, e não dentro do script. JSON é um formato de texto simples, de nomes e valores, que tanto pessoas quanto programas conseguem ler. Quando um novo centro abre, o líder de TI atualiza o arquivo JSON sem mexer no código. Separar a configuração do código torna os scripts mais fáceis de manter e reduz a chance de erros quando alguém com menos familiaridade com programação precisa fazer uma alteração. Ela acrescenta um arquivo curto de exemplo.
4.3 Evitar dados pessoais
A primeira exportação que Priya recebe inclui os endereços de e-mail de quem reportou. Ela pede que sejam removidos, porque o resumo só precisa das contagens por centro, e os nomes poderiam fazer os funcionários se sentirem monitorados. A exportação passa a trazer um código aleatório no lugar. Ela guarda os arquivos numa pasta restrita e os apaga depois de quatro semanas. A boa prática em scripts inclui pensar em que dados o script manipula e se ele precisa deles. O líder de TI concorda com a mudança e a registra nas notas de tratamento de dados, e Tom a elogia por levantar a questão cedo.
Exemplo resolvido
Priya escreve um script de resumo do CSV, leva as configurações para JSON e remove da exportação os endereços de quem reporta.
Caso sintético. Os dados são sintéticos.
Erros e limites
As exportações podem mudar de formato. Às vezes é possível vincular os códigos aleatórios.
Exercícios
-
EX013 — Motivo do módulo csv. Por que usar o módulo csv do Python? Rubrica: 3 = trata as vírgulas dentro dos campos;; 2 = parsing;; 1 = split;; 0 = nenhuma.
-
EX014 — Centro principal no laboratório. Que centro de distribuição teve mais reportes no laboratório? Rubrica: 3 = North, com 12;; 2 = North;; 1 = vago;; 0 = nenhuma.
-
EX015 — Vantagem do JSON. Por que guardar as configurações em JSON? Rubrica: 3 = as mudanças não exigem editar o código;; 2 = manutenibilidade;; 1 = vago;; 0 = nenhuma.
-
EX016 — Campo removido. Que campo foi removido da exportação? Rubrica: 3 = os endereços de e-mail de quem reporta;; 2 = endereços;; 1 = vago;; 0 = nenhuma.
Síntese
Os scripts devem ser testados, configuráveis e cuidadosos com os dados pessoais.
Continue estudando — aula 04 (capítulo 04 de 18)
← Capítulo 03 · Índice das aulas · Capítulo 05 →
Continue para a próxima aula já escrita.