Tratamento de exceções em Python | Teste e exceto em Python

Conteúdo

Introdução

Erros são o pesadelo da existência de um programador. Você escreve um incrível trecho de código, você está pronto para executá-lo e construir um poderoso modelo de aprendizado de máquina, e, em seguida, pouf. Python lança um erro inesperado, terminando sua esperança de execução rápida código.

Cada um de nós enfrentou este problema e saiu dele como um programador melhor.. Enfrentar erros e erros é o que aumenta nossa confiança a longo prazo e nos ensina lições valiosas ao longo do caminho..

exceção-manuseio-3578609

Temos algumas regras ao escrever programas em qualquer linguagem de programação, como não usar um espaço ao definir um nome variável, adicionar cólon (:) após a declaração se, e assim por diante. Se não seguirmos essas regras, encontramos erros de sintaxe e nosso programa se recusa a executar até removermos esses erros.

Mas há momentos em que o programa é sintáticamente correto e ainda joga um erro quando tentamos executar o programa. O que está acontecendo aqui?? Nós vamos, esses erros detectados durante a execução são chamados de exceções. E lidar com esses erros é chamado de manipulação de exceção..

Vamos falar sobre o manuseio de exceções em Piton aqui!

Tabela de conteúdo

  1. Vantagens do tratamento de exceções
  2. Exceções comuns
  3. Declaração de Prova e Exceção
  4. Outra declaração
  5. Finalmente declaração
  6. Caso de uso de tratamento de exceção da vida real

Vantagens do tratamento de exceções

Por que eu deveria aprender a lidar com exceções?? Deixe-me responder que usando um argumento de duas pontas:

  1. Suponha que você tenha escrito um script para ler milhares de arquivos presentes em vários diretórios. Agora, pode haver algum tipo de erro lá, como perder um tipo de arquivo ou ser malformado ou disponível em diferentes extensões. Nesse caso, não é possível abrir todos os arquivos e escrever um script de acordo. O manuseio de exceções nos permite definir múltiplas condições. Por exemplo, se o formato estiver incorreto, corrigi-lo primeiro e, em seguida, tentar ler o arquivo. Pelo contrário, pular a leitura desse arquivo e criar um arquivo de registro para que possamos lidar com ele mais tarde.
  2. Em segundo lugar, vamos dizer que estamos extraindo dados de restaurante de um site e nosso script olha para o nome, avaliações de restaurantes e endereço. Por alguma razão, endereço de restaurante desaparecido no site. Neste caso, se não estamos lidando com as exceções, nosso script pode parar no meio, assim, ao coletar dados em grande quantidade, é essencial que lidamos com exceções.

Exceções comuns

Aqui está uma lista de exceções comuns que você encontrará em Python:

  • ZeroDivisionError: Sobe quando você tenta dividir um número por zero
  • ImportError: é gerado quando você tenta importar a biblioteca que não está instalada ou forneceu o nome errado
  • IndexError: Gera quando um índice não é encontrado em um fluxo. Por exemplo, se o comprimento da lista é 10 e você está tentando acessar o décimo primeiro índice dessa lista, você vai ter esse erro.
  • IndentationError: Aumenta quando o recuo não é especificado corretamente
  • ValueError: Gera quando a função incorporada para um tipo de dados tem o tipo de argumentos válidos, mas os argumentos têm valores inválidos especificados
  • Exception: Classe base para todas as exceções. Se você não tem certeza de que exceção pode ocorrer, você pode usar a classe base. Ele vai cuidar de todos eles.

Você pode ler sobre as exceções mais comuns aqui.

Tratamento de exceções em Python: declaração de prova e exceção

Vamos definir uma função para dividir dois números uma e B. Funcionará bem se o valor de b não for zero, mas vai gerar um erro se o valor de b é zero:

captura de tela de 2020-04-09-13-18-15-3143589

Nós podemos lidar com isso usando o tentar e exceto demonstração. Primeiro, a cláusula de tentativa será executada, que são as declarações entre as palavras-chave tentar e, exceto.

Se não ocorrer exceção, a cláusula exceto será omitida. Por outro lado, se uma exceção ocorre durante a execução da cláusula de tentativa, o resto das declarações try será omitido:

Tratamento de exceções em Python: Outra declaração

E Python, também podemos instruir um programa para executar certas linhas de código se nenhuma exceção ocorrer usando o o resto cláusula. Agora, se não ocorrer exceção no código anterior, queremos imprimir “Nenhum erro ocorreu! !!”.

Vamos ver como fazer isso:

Tratamento de exceções em Python: declaração finalmente

Agora, e se precisarmos de algum tipo de ação para executar se o erro ocorreu ou não (como manter registros)? Para isto, temos o Finalmente cláusula em Python. ele sempre vai correr se o programa recebe qualquer uma das exceções ou não.

Vamos ver como podemos usar o Finalmente cláusula para escrever registros mais tarde neste artigo.

Agora, no exemplo acima, Eu quero imprimir o valor de uma e B após cada execução, independentemente de se o erro ocorreu ou não. Vamos ver como fazer isso.:

Caso de uso da vida real para tratamento de exceção em Python

Até agora, vimos o manuseio de exceções em alguns dados aleatórios. Que tal puxar a alavanca um pouco e entender isso usando um exemplo da vida real?

Temos dados contendo detalhes dos funcionários, como sua educação, era, número de treinamentos realizados, etc. Os dados são divididos em vários diretórios por região. Os detalhes dos funcionários pertencentes à mesma região são armazenados no mesmo arquivo.

Agora, nossa tarefa é ler todos os arquivos e concategá-los para formar um único arquivo. Vamos começar importando algumas das bibliotecas necessárias.

Obtenha a estrutura do diretório

Para ver a estrutura do diretório, vamos usar o Glob biblioteca e para ler arquivos CSV, vamos usar o Pandas Biblioteca:

Veja a estrutura do diretório usando o glob.glob função e caminho do diretório de destino. você pode baixar a estrutura do diretório aqui.

captura de tela-de-2020-04-08-22-16-19-9966985

Podemos ver que os nomes das pastas estão representados como alguns números e na próxima etapa vamos passar por cada um dos diretórios e ver os arquivos presentes:

captura de tela-de-2020-04-08-22-19-42-7921371

Em cada uma das pastas, há um arquivo CSV presente que contém os detalhes dos funcionários naquela região em particular. Você pode abrir e visualizar qualquer arquivo CSV. Abaixo está a imagem de como os dados se parecem no region_1.csv procedimentos. Contém detalhes de funcionários que pertencem à região 1:

captura de tela-de-2020-04-08-22-21-42-1889046

Leia os arquivos

Agora, sabemos que há um padrão na estrutura do diretório e nome do arquivo. No diretório Norte, há um nome de arquivo CSV region_n presente. Então agora vamos tentar ler todos esses arquivos usando um loop.

Sabemos que o número máximo é 34, então vamos usar um em laço para iterar e ler arquivos em ordem:

captura de tela-de-2020-04-08-22-27-22-5262966

captura de tela-de-2020-04-08-22-28-22-4584987

Você pode ver que o arquivo region_7 não está presente. Então, uma das maneiras mais simples de lidar com isso é colocar um e condição no programa – se o nome do diretório é 7 em seguida, pular a leitura desse arquivo.

Mas, E se tivermos que ler milhares de arquivos juntos?? Seria uma tarefa tediosa atualizar a condição se cada vez que temos um erro.

Aqui, vamos usar a tentativa e, exceto declaração para lidar com erros. Se houver exceções durante o tempo de execução durante a leitura de qualquer arquivo, vamos simplesmente pular esse passo e continuar lendo a seguinte pasta. Vamos imprimir o nome do arquivo com “Arquivo não encontrado!” se o erro é FileNotFoundError e imprimir o nome do arquivo com “Outro erro!” se ocorrer qualquer outro erro.

captura de tela-de-2020-04-08-22-38-03-6851291

diretório-7117961

Podemos ver que temos outro erro no número do arquivo 32. Vamos tentar ler este arquivo separadamente:

captura de tela de 2020-04-08-22-40-28-8400685

Existem alguns problemas com o formato arquivo 32. Se você abrir o arquivo region_32.csv, você verá que há alguns comentários adicionados na parte superior do arquivo e podemos ler esse arquivo usando o Saltos parâmetro:

captura de tela-de-2020-04-08-22-42-19-56660666

Vamos ver como lidar com isso.

Tente declarações, Exceto e Outra Vez

Vamos criar duas variáveis booleanas: erro de varredura, arquivo não encontrado – e inicializar tanto como Falso no início de cada iteração. Então, se conseguirmos FileNotFoundError, então vamos estabelecer arquivo não encontrado como True.

Mais tarde, vamos imprimir esse arquivo em particular como faltando e pular essa iteração. Se conseguirmos ParserError, então vamos estabelecer erro de varredura como True e imprimir que o arquivo em particular está malformado e re-ler o arquivo usando o Saltos parâmetro.

Agora, se não ocorre exceção, o código da outra declaração será executado. Na outra declaração, adicionaremos o quadro de dados à lista de quadros de dados:

Declaração de prova, exceção, outro e, finalmente,

suponha que você deseja criar um arquivo de log para manter o controle de quais arquivos estão corretos e que são livres de erros. Este é um caso de uso da declaração finalmente. Se você tem o erro ou não, o julgamento será finalmente aplicado.

Em seguida, no Finalmente cláusula, vamos escrever para o arquivo sobre o estado do arquivo em cada iteração:

Notas finais

Uso o manuseio de exceções ao extrair dados de várias páginas da Web. Eu adoraria saber como você usa o manuseio de exceções, então, comente abaixo com suas idéias e compartilhe-as com a comunidade.

Se você achou este artigo informativo, Compartilhe com seus amigos e comente abaixo sobre suas perguntas e comentários. Listei alguns artigos incríveis relacionados a Python e ciência de dados abaixo para sua referência:

Assine a nossa newsletter

Nós não enviaremos SPAM para você. Nós odiamos isso tanto quanto você.