Stop execution of a script called with execfile
control-flow, execfile, python
Solution
`main` can wrap the `execfile` into a `try`/`except` block: `sys.exit` raises a SystemExit exception which `main` can catch in the `except` clause in order to continue its execution normally, if desired. I.e., in `main.py`:
try:
execfile('whatever.py')
except SystemExit:
print "sys.exit was called but I'm proceeding anyway (so there!-)."
print "so I'll print this, etc, etc"
and `whatever.py` can use `sys.exit(0)` or whatever to terminate its own execution only. Any other exception will work as well as long as it's agreed between the source to be `execfile`d and the source doing the `execfile` call -- but `SystemExit` is particularly suitable as its meaning is pretty clear!
Problem
Is it possible to break the execution of a Python script called with the execfile function without using an if/else statement? I've tried `exit()`, but it doesn't allow `main.py` to finish. ``` # main.py print "Main starting" execfile("script.py") print "This should print" # script.py print "Script starting" a = False if a == False: # Sanity checks. Script should break here # <insert magic command> # I'd prefer not to put an "else" here and have to indent the rest of the code print "this should not print" # lots of lines below ```