Saia para a linha de comando em Python
-
24-09-2019 - |
Pergunta
Eu tenho um script que quero sair cedo sob alguma condição:
if not "id" in dir():
print "id not set, cannot continue"
# exit here!
# otherwise continue with the rest of the script...
print "alright..."
[ more code ]
Eu corro este script usando execfile("foo.py")
No prompt interativo do Python e gostaria que o script sai de voltar ao intérprete interativo. Como eu faço isso? Se eu usar sys.exit()
, o intérprete Python sai completamente.
Solução
Coloque seu bloco de código em um método e retorne desse método, assim:
def do_the_thing():
if not "id" in dir():
print "id not set, cannot continue"
return
# exit here!
# otherwise continue with the rest of the script...
print "alright..."
# [ more code ]
# Call the method
do_the_thing()
Além disso, a menos que haja um bom motivo para usar o ExecFile (), esse método provavelmente deve ser colocado em um módulo, onde pode ser chamado de outro script Python, importando -o:
import mymodule
mymodule.do_the_thing()
Outras dicas
No intérprete interativo; truque SystemExit
criado por sys.exit
e ignore:
try:
execfile("mymodule.py")
except SystemExit:
pass
Estou um pouco obcecado com ipython para trabalho interativo, mas confira o tutorial sobre incorporação de concha para uma solução mais robusta do que Este (que é a sua rota mais direta).
Em vez de usar o Execfile, você deve tornar o script importável (nome=='a Principal Proteção, separada em funções, etc.), e depois chama as funções do intérprete.