import sys sys.exit(1) # Or something that calls sys.exit(). If you need to exit without raising SystemExit: import os os._exit(1) I do this, in code that runs under unittest and calls fork(). Unittest gets when the forked process raises SystemExit. This is definitely a corner case!
Share, comment, bookmark or report
Can be used exactly like sys.exit() (with the exception) Cons: No exception message; The sys.exit() Exits Python and raising the SystemExit exception (requires an import). Designed to work inside programs. Usage: import sys sys.exit() Execution Time (of just the import and sys.exit()): 0.07s. Or you can use a message for the SystemExit exception:
Share, comment, bookmark or report
sys.exit is the canonical way to exit. Internally sys.exit just raises SystemExit. However, calling sys.exitis more idiomatic than raising SystemExit directly. os.exit is a low-level system call that exits directly without calling any cleanup handlers. quit and exit exist only to provide an easy way out of the Python prompt. This is for new ...
Share, comment, bookmark or report
218. Yes. sys.exit raises SystemExit, so you can check it with assertRaises: with self.assertRaises(SystemExit): your_method() Instances of SystemExit have an attribute code which is set to the proposed exit status, and the context manager returned by assertRaises has the caught exception instance as exception, so checking the exit status is easy:
Share, comment, bookmark or report
sys.exit is defined in sysmodule.c and just runs PyErr_SetObject(PyExc_SystemExit, exit_code);, which is effectively the same as directly raising SystemExit. In fine detail, raising SystemExit is probably faster, since sys.exit requires an LOAD_ATTR and CALL_FUNCTION vs RAISE_VARARGS opcalls. Also, raise SystemExit produces slightly smaller ...
Share, comment, bookmark or report
sys.exit(0) You may check it here in the python 2.7 doc: The optional argument arg can be an integer giving the exit status (defaulting to zero), or another type of object. If it is an integer, zero is considered “successful termination” and any nonzero value is considered “abnormal termination” by shells and the like.
Share, comment, bookmark or report
You can also use simply exit(). Keep in mind that sys.exit(), exit(), quit(), and os._exit(0) kill the Python interpreter. Therefore, if it appears in a script called from another script by execfile(), it stops execution of both scripts. See"Stop execution of a script called with execfile" to avoid this.
Share, comment, bookmark or report
Then: exit (code=None) Objects that when printed, print a message like “Use quit () or Ctrl-D (i.e. EOF) to exit”, and when called, raise SystemExit with the specified exit code. If we compare it to sys.exit () documentation, it's using the same mechanism which is raising a SystemExit exception.
Share, comment, bookmark or report
The standard convention for all C programs, including Python, is for exit(0) to indicate success, and exit(1) or any other non-zero value (in the range 1..255) to indicate failure. Any value outside the range 0..255 is treated modulo 256 (the exit status is stored in an 8-bit value).
Share, comment, bookmark or report
@rhody I'm sorry to hear that, and not sure why. I've just tried to run the snippet in a terminal on a fresh install of Ubuntu 22.04 using Python 3.10.12, on my main Ubuntu 22.04 box using Python 3.11.7 & Python 3.10.12, also on macOS (M1) using Python 3.11.5 & Python 3.10.13; it worked in each case.
Share, comment, bookmark or report
Comments