如何终止脚本?
我想知道怎么提前结束一个脚本,就像PHP里的die()
命令那样?
14 个回答
另一种方法是:
raise SystemExit
想要提前结束一个Python脚本,可以使用内置的 quit()
函数。这种方法不需要导入任何库,既简单又高效。
举个例子:
#do stuff
if this == that:
quit()
import sys
sys.exit()
以下是来自 sys
模块文档 的一些细节:
sys.exit([arg])
这个命令用于退出 Python 程序。它的实现方式是抛出一个叫做
SystemExit
的异常,这样在程序退出前,使用try
语句中的 finally 代码块可以正常执行,此外,还可以在外层捕获这个退出尝试。可选的参数 arg 可以是一个整数,表示退出状态(默认是零),也可以是其他类型的对象。如果是整数,零表示“正常结束”,而任何非零值则被认为是“异常结束”。大多数系统要求这个值在 0 到 127 之间,超出这个范围可能会产生不确定的结果。一些系统会为特定的退出代码分配特定的含义,但这些通常不太完善;比如 Unix 系统一般用 2 表示命令行语法错误,用 1 表示其他类型的错误。如果传入的是其他类型的对象,None 相当于传入零,而其他对象会被打印到
stderr
,并且退出代码为 1。特别是,sys.exit("some error message")
是在发生错误时快速退出程序的一种方式。因为
exit()
最终“只是”抛出一个异常,所以只有在主线程中调用时,它才会退出进程,并且这个异常没有被捕获。
请注意,这是一种“友好”的退出方式。@glyphtwistedmatrix 提到,如果你想要“强制退出”,可以使用 os._exit(*errorcode*)
,不过这可能在不同操作系统上有所不同(例如,在 Windows 上可能不接受错误代码),而且这种方式不太友好,因为它不会让解释器在进程结束前做任何清理。另一方面,它确实会杀死整个进程,包括所有正在运行的线程,而 sys.exit()
(文档中提到)只有在主线程中调用时才会退出,且没有其他线程在运行。