Mapa da aula
Aula 04 publicada. Mapa, exemplo, EX013.
flowchart TD
N0["4.1 Formatos comuns"]
N1["4.2 Saída mínima"]
N2["4.3 Validar a entrada"]
N3["4.4 Tratar os arquivos"]
N0 --> N1 --> N2 --> N3
N3 --> EX["Exemplo resolvido"]
EX --> Q["Exercício EX013"]
Desenho lógico
flowchart LR
N0["4.1 Formatos comuns"]
N1["4.2 Saída mínima"]
N2["4.3 Validar a entrada"]
N3["4.4 Tratar os arquivos"]
N0 --> N1 --> N2 --> N3 --> Q["EX013"]
[4.1 Formatos comuns]
|
v
[4.2 Saída mínima]
|
v
[4.3 Validar a entrada]
|
v
[4.4 Tratar os arquivos]
|
v
[Exemplo resolvido] --> [Exercício EX013]
Objetivos de aprendizagem
Você vai (1) ler exportações CSV e JSON com segurança; (2) escrever scripts que minimizem a saída; (3) validar os dados antes de tratá-los.
4.1 Formatos comuns
Os sistemas da Marlow exportam dados em CSV, para planilhas, e em JSON, para as interfaces entre sistemas. Leila pratica a leitura dos dois com os módulos csv e json da biblioteca padrão do Python, usando prontuários sintéticos. Ela observa que os arquivos CSV abrem facilmente em planilhas e são enviados por e-mail, então se espalham depressa, enquanto as exportações JSON costumam ter mais campos do que alguém examina. Numa exportação JSON sintética, ela encontra um campo de histórico médico aninhado dentro do objeto de consulta, embora o relatório de agendamento só precise de horários e códigos de clínica.
4.2 Saída mínima
Leila escreve um script que conta as consultas por clínica e por dia, para o planejamento da capacidade. A primeira versão imprime as linhas completas das consultas durante a depuração. Ela o reescreve para produzir apenas contagens e gravar os detalhes de depuração num arquivo temporário apagado no fim; só contagens agregadas saem do script. O Sr. Okafor explica que as saídas dos scripts costumam acabar em chamados, mensagens de chat e e-mails, então um script que imprime nomes de pacientes pode causar uma divulgação mesmo sem que ninguém tenha a intenção de compartilhar nada.
4.3 Validar a entrada
Antes de tratar uma exportação, o script de Leila confere se o arquivo tem as colunas esperadas e rejeita arquivos com colunas inesperadas, como medical_history ou date_of_birth. Também confere se as datas são interpretadas corretamente e se os códigos de clínica ficam entre um e oito. Quando a validação falha, o script para com uma mensagem clara, em vez de tentar adivinhar. Ela explica que a validação aplica a minimização no ponto em que os dados entram numa ferramenta, e que também pega erros de exportação antes que eles produzam relatórios enganosos para os gerentes.
4.4 Tratar os arquivos
Os scripts de Leila leem as exportações de uma pasta restrita e nunca as copiam para a área de trabalho ou para drives pessoais. Os arquivos temporários usam o módulo tempfile do Python e são removidos quando o script termina. No topo de cada script, ela acrescenta uma nota explicando que dados ele lê, por quê e o que produz. O Sr. Okafor revisa os scripts e pede que ela retire uma importação não usada de uma biblioteca externa de gráficos, mantendo as ferramentas dependentes só da biblioteca padrão, o que simplifica a revisão e a manutenção.
Exemplo resolvido
Leila lê exportações CSV e JSON, encontra um campo desnecessário de histórico médico aninhado, escreve um script de capacidade que só conta, valida colunas e valores e trata os arquivos apenas numa pasta restrita.
Caso sintético. As exportações são sintéticas.
Erros e limites
As regras de validação precisam de atualização quando os sistemas mudam o formato das exportações.
Exercícios
- EX013 — Campo aninhado. Que campo desnecessário Leila encontrou na exportação JSON?
Mostrar critérios de avaliação
Rubrica: 3 = histórico médico dentro das consultas;; 2 = parcialmente correta;; 1 = vago;; 0 = nenhuma. - EX014 — Saída do script. Por que os scripts devem evitar imprimir nomes?
Mostrar critérios de avaliação
Rubrica: 3 = as saídas acabam em chamados e chats;; 2 = menciona propagação;; 1 = vago;; 0 = nenhuma. - EX015 — Ação da validação. O que o script faz quando a validação falha?
Mostrar critérios de avaliação
Rubrica: 3 = para com uma mensagem clara;; 2 = parcialmente correta;; 1 = adivinha;; 0 = nenhuma. - EX016 — Arquivos temporários. Como os arquivos temporários são tratados?
Mostrar critérios de avaliação
Rubrica: 3 = módulo tempfile, removidos no fim;; 2 = menciona remoção;; 1 = mantidos;; 0 = nenhuma.