OpenCyber Academy
Técnico · Capítulo 4 · Português
Código do curso: OCA-050Capítulo 04: OCA-050-C004

Capítulo 4 — Scripts e formatos de dados

Ensino gratuito e aberto para quem deseja proteger pessoas e tecnologias. Não é preciso criar uma conta para estudar ou consultar as respostas.

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

Respostas comentadas

EX013. Um campo de histórico médico aninhado em cada objeto de consulta.

EX014. As saídas são copiadas para chamados, chats e e-mails, criando divulgações.

EX015. Para com uma mensagem clara, em vez de adivinhar.

EX016. Criados com tempfile e removidos quando o script termina.