关于语法:如何中止Python脚本的执行?

How do I abort the execution of a Python script?

本问题已经有最佳答案,请猛点这里访问。

Possible Duplicate:
Terminating a Python script

我有一个简单的python脚本,如果满足某个条件,我希望它停止执行。

例如:

1
2
3
4
5
done = True
if done:
    # quit/stop/exit
else:
    # do other stuff

本质上,我在寻找一些与函数体中的"return"关键字行为相同的东西,它允许代码流退出函数,而不执行剩余的代码。


要退出可使用的脚本,

1
2
import sys
sys.exit()

还可以提供退出状态值,通常为整数。

1
2
import sys
sys.exit(0)

以零退出,这通常被解释为成功。非零代码通常被视为错误。默认值是以零退出。

1
2
import sys
sys.exit("aa! errors!")

打印"AA"!错误!"并退出,状态代码为1。

操作系统模块中还有一个exit()函数。函数的作用是:引发SystemExit异常以退出程序,因此可以执行Try语句和清除代码。操作系统的exit()版本不会这样做。它只是在不进行任何清理或刷新输出缓冲区的情况下结束程序,因此通常不应该使用它。

python文档指出os.u exit()是结束通过调用os.fork()创建的子进程的正常方法,因此它在某些情况下确实有用途。


1
2
import sys
sys.exit()


您可以将脚本的主体放入一个函数中,然后从该函数返回。

1
2
3
4
5
6
7
8
9
10
11
def main():
  done = True
  if done:
    return
    # quit/stop/exit
  else:
    # do other stuff

if __name__ =="__main__":
  #Run as main program
  main()

您可以使用:

1
2
import sys
sys.exit(...)

或:

1
raise SystemExit(...)

可选参数可以是退出代码或错误消息。两种方法是相同的。我以前更喜欢sys.exit,但最近我转向了raising systemexit,因为它似乎在其他代码中更突出(由于raise关键字)。


exit()应该完成这个技巧


exit()应该这样做。


尝试

1
sys.exit("message")

就像珍珠一样

1
die("message")

如果这是你要找的。即使从导入的模块/def/函数调用脚本,它也会终止脚本的执行。


如果整个程序应该停止,则使用sys.exit(),否则只使用空返回。