Sair/terminar scripts Python (exemplos simples)

hoje, vamos mergulhar no tópico de sair/terminar scripts Python! Antes de começarmos, você deve ter uma compreensão básica do que é o Python e algum conhecimento básico sobre o seu uso.

Você pode usar o IDE de sua escolha, mas eu vou usar o subsistema Linux da Microsoft para o pacote Windows (WSL) desta vez. Para mais informações sobre isso e como você ativá-lo no Windows 10, vá aqui.

tabela de conteúdos

porque é que o Python sai automaticamente de um programa quando está terminado?,

a forma como o Python executa um bloco de código faz com que execute cada linha em ordem, verificando dependências para importar, ler definições e classes para armazenar na memória, e executando pedaços de código, a fim de permitir loops e chamadas de volta para as definições e classes definidas.

Quando o interpretador Python chega ao fim do arquivo (EOF), ele percebe que não pode ler mais dados da fonte, seja essa a entrada do Usuário através de um IDE ou leitura de um arquivo. Para demonstrar, vamos tentar obter a entrada do Usuário e interromper o interpretador no meio da execução!,

primeiro, a partir do seu terminal bash no seu PowerShell, abra um novo ficheiro chamado “input.,n colar o seguinte para o shell clicando com o botão direito na janela do PowerShell

name=input("Don"t type anything!\n")print("Hi,",name,"!")

Agora, pressione CTRL+X para salvar e sair do nano janela e no shell, digite:

$ python3 input.pyDon"t type anything!

E pressione CTRL+D para encerrar o programa enquanto ele está aguardando entrada do usuário

Traceback (most recent call last):File "input.py", line 1, in name=input("Don"t type anything!")EOFError

EOFError exceção nos diz que o interpretador Python atingido o fim do ficheiro (EOF) condição antes de terminar a execução do código, como o usuário inseriu nenhuma entrada de dados.,

Quando o Python atinge a condição de EOF ao mesmo tempo que executou todo o código sem lançar quaisquer exceções, que é uma maneira que o Python pode sair “graciosamente.”

Detect script exit

If we want to tell when a Python program outs without throwing an exception, we can use the built-in Python atexit module.

o atexit lida com qualquer coisa que queremos que o programa faça quando ele sair e é normalmente usado para fazer a limpeza do programa antes que o processo do programa termine

para experimentar com atexit, vamos modificar a nossa entrada.,py exemplo para imprimir uma mensagem na saída do programa. Abra o input.py arquivo novamente e substituir texto

import atexitatexit.register(print,"Program exited successfully!")name=input("What"s your name?\n")print("Hi,",name,"!")

Digite seu nome, e quando você pressionar enter, você deve obter:

What"s your name?ExampleHi, Example !Program exited successfully!

Repare como a saída de texto aparece no final da saída, não importa onde estamos colocar o atexit chamada, e como se substituir o atexit chamadas com um simples print(), temos a saída de texto onde o print() tudo foi feito, em vez de para onde o código sai.,

Program exited successfully!What"s your name?ExampleHi, Example !

saída normal

Existem várias maneiras para sair de um Programa Python que não envolva a lançar uma exceção; o primeiro ia tentar é quit()

Você pode usar o comando bash echo $? para obter o código de saída do interpretador Python.,

também é possível definir o tipo de código que o intérprete deve sair com a entrega de quit() argumento um número inteiro menor que 256

exit() tem a mesma funcionalidade que é um alias para o quit()

Nem quit() nem exit() são consideradas boas práticas, na medida em que ambas requerem o site módulo, que está destinado para ser usado para interativos intérpretes e não nos programas., Para um de nossos programas, devemos usar algo como sys.exit

Repare que precisamos importar explicitamente um módulo para chamada de exit(), isto pode parecer não é uma melhoria, mas garante que o módulo é carregado, porque não é uma boa suposição site vai ser carregados em tempo de execução., Se não deseja importar os módulos extra, nós pode fazer o que exit() quit() e sys.exit() estão fazendo nos bastidores e raise SystemExit

Sair com mensagens de erro

o Que, se ficar ruim de entrada de um usuário?, Vamos olhar para trás em nossas input.py script e adicionar a capacidade de lidar com más entrada do usuário (CTRL+D para passar um caractere EOF)

try instrução diz ao Python para tentar o código dentro a instrução e para passar qualquer exceção para o except instrução antes de sair.

sair sem erro

e se o utilizador entregar o seu programa um erro, mas não quer que o seu código imprima um erro, ou que faça algum tipo de manipulação de erros para minimizar o impacto do utilizador?,

Nós podemos adicionar um finally instrução, o que nos permite executar código depois de fazer o nosso tratamento de erros em catch

Observe que o usuário nunca sabe de uma EOFError ocorreu, isto pode ser usado para passar valores padrão em caso de má entrada ou argumentos.,

Exit and release your resources

geralmente, Python libera todos os recursos que você chamou em seu programa automaticamente quando ele sai, mas para certos processos, é boa prática codificar alguns recursos limitados em um bloco with.

muitas vezes você vai ver isso emopen() chamadas, onde não liberar corretamente o arquivo pode causar problemas com a leitura ou escrita para o arquivo mais tarde.

with bloquear automaticamente libera todos os recursos requisitados dentro dele., Se queríamos mais explicitamente garantir que o arquivo foi fechado, podemos usar a tag atexit.register() comando para chamar close()

$ nano openfile.pyimport atexitfile=open("testfile.txt","w")file.write("let"s write some text!\n")atexit.register(file.close)

Se os recursos são chamadas sem utilizar um with bloco, certifique-se explicitamente liberá-los em um atexit comando.

Sair depois de um tempo

Se estamos preocupados com o nosso programa pode nunca terminar normalmente, em seguida, nós podemos utilizar Python multiprocessing módulo para garantir que o nosso programa vai terminar.,

Repare como o processo não foi concluída quando a função foi dito para aguardar 7 segundos, mas concluído e impresso o que era suposto, quando foi dito para esperar 0 segundos!

Sair usando uma instrução return

Se nós temos uma seção de código que deseja usar para encerrar o programa inteiro, em vez de deixar o break declaração de continuar código fora do loop, podemos usar o return sys.exit() para sair do código completamente.,

Sair no meio de uma função

Se a gente não quiser usar uma instrução de retorno, ainda podemos chamar o sys.exit() para fechar o nosso programa e fornecer um return em outro ramo. Vamos usar o nosso código de break.py outra vez.

Sair quando as condições forem atendidas

Se a gente tem um ciclo em nossa código Python e nós queremos ter certeza de que o código pode sair se depara com um problema, podemos usar um sinalizador de que ele possa verificar para encerrar o programa.,

Exit on keypress

If we want to hold our program open in the console till we press a key, we can use an unboundinput() to close it.

$ nano holdopen.pyinput("Press enter to continue")$ python3 holdopen.pyPress enter to continue$

também podemos passarCTRL+Cpara a consola para dar a Python a carácter. Nós podemos até mesmo lidar com a exceção

como já lidamos com exceções antes.,

Sair de um programa multithread

Saindo um programa multithread é um pouco mais envolvido, como um simples sys.exit() é chamado de thread que só vai sair o thread actual., O “sujo” maneira de fazer isso é usar os._exit()

Como você pode ver, o programa não imprime o resto do programa antes de sair, é por isso que os._exit() normalmente é reservado para um último recurso, e chamando qualquer um Thread.join() a partir do thread principal é o método preferencial para terminar um programa multithread.,

Final sem sys sair

Sys.exit() é apenas uma das várias maneiras pelas quais podemos sair dos nossos programas Python, o que sys.exit() não é raise SystemExit então, nós podemos facilmente utilizar qualquer built-in Python exceção ou criar um dos nossos!

também podemos usar o os._exit() para informar ao host do sistema para matar o python processo, apesar de isso não fazer atexit limpeza.,

Sair após exceção

Se queremos sair em qualquer excepção e sem qualquer tratamento, podemos usar o nosso try-except bloco para executar os._exit().

Exit and restart

finalmente, vamos explorar o que fazemos para sair do Python e reiniciar o programa, o que é útil em muitos casos.

espero que ache o tutorial útil. Continua a voltar.obrigado.,

Fundador da LikeGeeks. Trabalho como administrador de sistemas Linux desde 2010. Sou responsável pela manutenção, segurança e resolução de problemas de Servidores Linux para vários clientes em todo o mundo. Adoro escrever scripts shell e Python para automatizar o meu trabalho.

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *