Tratamento de Erros, Validações e Logs de Execução

Tratamento de Erros, Validações e Logs de Execução — aula do módulo Script de Automação em Python, na trilha Seus Primeiros Projetos Práticos com IA da…

Leitura de aproximadamente 4 minutos.

Módulo: Script de Automação em Python · Curso: Seus Primeiros Projetos Práticos com IA · Formação: Formação Nível Zero: Ferramentas Essenciais e Gratuitas de IA e Código

Tratamento de Erros, Validações e Logs de Execução

O que você vai aprender

1. O Desafio da Execução Autônoma

Na aula anterior, nosso script funcionou perfeitamente porque os arquivos de teste estavam todos no formato correto e ninguém os estava usando.

No entanto, no mundo real, imprevistos acontecem constantemente:

Se o script não estiver preparado para lidar com essas exceções, ele simplesmente "travará" no primeiro obstáculo, interromperá a execução e deixará todos os outros arquivos sem processamento.


+-------------------------------------------------------------+
|            FLUXO RESILIENTE DE TRATAMENTO DE ERROS          |
+-------------------------------------------------------------+
|                                                             |
|  [ Arquivo Detectado ] ──> TRY: Tenta mover e ler           |
|                                  │                          |
|         ┌────────────────────────┴────────────────────────┐ |
|         ▼                                                 ▼ |
|  [ Sucesso ]                                     [ Falha ]  |
|  Log INFO: "Arquivo movido com sucesso"   EXCEPT: Captura erro
|                                            Log ERROR: "Arquivo
|                                            em uso, pulando..."
|         │                                                 │ |
|         └────────────────────────┬────────────────────────┘ |
|                                  ▼                          |
|                  [ Segue para o Próximo Arquivo ]           |
|                                                             |
+-------------------------------------------------------------+

2. Protegendo a Execução com try e except

Em Python, a estrutura try / except funciona como uma rede de segurança: 1. Bloco try: O código tenta executar a ação arriscada (ler ou mover o arquivo). 2. Bloco except Exception as erro: Se algo der errado, a execução não entra em pânico. O erro é capturado, uma mensagem explicativa é registrada, e o script segue adiante para o próximo item da fila.

3. Por Que print() Não é Suficiente: O Módulo logging

Muitos iniciantes usam a função print() para exibir o que o script está fazendo. O problema é que o print() só aparece na tela preta do terminal naquele instante. Se a automação rodar de madrugada ou em segundo plano, ninguém verá a mensagem, e se algo falhar, você não saberá o motivo.

O módulo nativo logging do Python resolve isso gravando os eventos em um arquivo de texto com data, hora e níveis de gravidade:

Comparativo: print() versus logging

| Recurso | Função print() | Módulo logging | |---|---|---| | Destino | Apenas a tela atual do terminal | Terminal E arquivo de texto permanente (.log) | | Data e Hora | Exige formatação manual | Adicionada automaticamente em cada linha | | Níveis de Severidade | Não possui distinção | Filtra por INFO, WARNING, ERROR | | Auditoria Futura | Impossível após fechar a janela | Histórico completo persistido para consulta |

4. O Prompt para Adicionar Robustez e Logs

Vamos solicitar à IA a refatoração do nosso script organizador.py para incluir logs e tratamento defensivo:


Atue como um engenheiro de software sênior especialista em confiabilidade de scripts Python.
Refatore o arquivo organizador.py para incluir tratamento de erros e logging profissional.

Requisitos técnicos obrigatórios:
1. Configure o módulo logging para gravar no arquivo "execucao.log" e simultaneamente exibir no console.
2. O formato de cada linha de log deve ser: [ANO-MES-DIA HORA:MIN:SEG] [NIVEL] Mensagem.
3. Envolva a leitura e movimentação de cada arquivo em blocos try/except específicos (capturando PermissionError, FileNotFoundError e erros genéricos).
4. Se um arquivo falhar, registre o erro com logging.error(...) e continue o loop para os demais arquivos sem parar o programa.
5. Ao final, registre uma linha de resumo (logging.info) informando o total de arquivos processados com sucesso e o total de falhas.

Entregue o código completo e refatorado em um bloco único de código Python.

5. Armadilhas Comuns e Como Evitar

[!IMPORTANT]
Usar except: vazio sem registrar o erro: O pior anti-padrão de programação é escrever except: pass. Isso silencia todos os erros sem deixar rastro. Se você cometer um erro de digitação no nome de uma variável, o Python esconderá o problema e você passará horas tentando descobrir por que o script não faz nada. Sempre capture a exceção e registre com logging.error(f"Falha ao processar {arquivo}: {erro}").

Exercício Prático

Vamos testar o sistema de logs e tratamento de erros:

1. Atualize o script: Substitua o conteúdo de organizador.py pelo código com tratamento de erros e logging. 2. Crie novos arquivos de teste: Coloque na pasta dados_brutos/ um novo arquivo relatorio_setembro.csv e um arquivo de texto notas.txt. 3. Execute o script:


   python organizador.py

4. Inspecione o arquivo de log: Abra o arquivo execucao.log gerado na pasta e observe o histórico com data, hora e cada etapa executada com sucesso.

Outras aulas do módulo