Quitter pour la ligne de commande en Python
-
24-09-2019 - |
Question
J'ai un script que je veux sortir tôt sous certaines conditions:
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 ]
Je lance ce script en utilisant execfile("foo.py")
à partir de l'invite interactive Python et je voudrais que le script pour quitter retourner à interpréteur interactif. Comment puis-je faire cela? Si j'utilise sys.exit()
, l'interpréteur Python sort complètement.
La solution
Mettez votre bloc de code dans une méthode et le retour de cette méthode, comme par exemple:
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()
En outre, à moins qu'il y ait une bonne raison d'utiliser execfile (), cette méthode devrait probablement être mis dans un module, où il peut être appelé à partir d'un autre script Python en importer:
import mymodule
mymodule.do_the_thing()
Autres conseils
Dans l'interpréteur interactif; attraper SystemExit
soulevé par sys.exit
et l'ignorer:
try:
execfile("mymodule.py")
except SystemExit:
pass
Au lieu d'utiliser execfile, vous devez faire le script importable ( nom == ' principale protection, en fonctions, seperated etc.), puis appeler les fonctions de l'interprète.