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
try / except para que o script continue rodando mesmo se um arquivo estiver corrompido.print() temporário e implementar um sistema de registro profissional com o módulo logging.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 ] |
| |
+-------------------------------------------------------------+
try e exceptEm 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.
print() Não é Suficiente: O Módulo loggingMuitos 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:
INFO: Informações normais sobre o fluxo (ex: "Pasta criada", "3 arquivos processados").WARNING: Alertas que não impedem a execução (ex: "Arquivo já existe, renomeando").ERROR: Falhas em operações específicas (ex: "Arquivo bloqueado pelo sistema").CRITICAL: Falhas catastróficas que exigem intervenção humana.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 |
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.
[!IMPORTANT]
Usarexcept:vazio sem registrar o erro: O pior anti-padrão de programação é escreverexcept: 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 comlogging.error(f"Falha ao processar {arquivo}: {erro}").
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.