Exit to command line in Python
-
24-09-2019 - |
Question
I have a script that I want to exit early under some condition:
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 ]
I run this script using execfile("foo.py")
from the Python interactive prompt and I would like the script to exit going back to interactive interpreter. How do I do this? If I use sys.exit()
, the Python interpreter exits completely.
Solution
Put your code block in a method and return from that method, like such:
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()
Also, unless there is a good reason to use execfile(), this method should probably be put in a module, where it can be called from another Python script by importing it:
import mymodule
mymodule.do_the_thing()
OTHER TIPS
In the interactive interpreter; catch SystemExit
raised by sys.exit
and ignore it:
try:
execfile("mymodule.py")
except SystemExit:
pass
I'm a little obsessed with ipython for interactive work but check out the tutorial on shell embedding for a more robust solution than this one (which is your most direct route).
Instead of using execfile, you should make the script importable (name=='main protection, seperated into functions, etc.), and then call the functions from the interpreter.