如何中止Python脚本的执行?

Ray*_*ega 144 python syntax scripting exit

可能重复:
终止Python脚本

我有一个简单的Python脚本,如果满足条件,我想停止执行.

例如:

done = True
if done:
    # quit/stop/exit
else:
    # do other stuff
Run Code Online (Sandbox Code Playgroud)

本质上,我正在寻找与函数体中的'return'关键字等效的东西,它允许代码流退出函数而不执行剩余的代码.

rya*_*n_s 249

要退出可以使用的脚本,

import sys
sys.exit()
Run Code Online (Sandbox Code Playgroud)

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

import sys
sys.exit(0)
Run Code Online (Sandbox Code Playgroud)

退出为零,通常被解释为成功.非零代码通常被视为错误.默认为退出零.

import sys
sys.exit("aa! errors!")
Run Code Online (Sandbox Code Playgroud)

打印"aa!errors!" 并以状态代码1退出.

os模块中还有一个_exit()函数.该sys.exit()函数抛出一个SystemExit异常退出程序,所以尝试语句和清理代码可以执行.os._exit()版本不会这样做.它只是结束程序而不进行任何清理或刷新输出缓冲区,因此通常不应该使用它.

Python文档表明,os._exit()是结束),可调用创建os.fork(子进程以正常的方式,所以它确实有在某些情况下使用.


Dav*_*cke 17

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

def main():
  done = True
  if done:
    return
    # quit/stop/exit
  else:
    # do other stuff

if __name__ == "__main__":
  #Run as main program
  main()
Run Code Online (Sandbox Code Playgroud)


efo*_*nis 15

你可以使用:

import sys
sys.exit(...)
Run Code Online (Sandbox Code Playgroud)

要么:

raise SystemExit(...)
Run Code Online (Sandbox Code Playgroud)

可选参数可以是退出代码或错误消息.两种方法都是相同的.我以前更喜欢sys.exit,但我最近改用了SystemExit,因为它似乎在其余的代码中更好(由于raise关键字).


Sec*_*Sec 6

exit() 应该可以解决问题

  • 我什至先在 shell 中测试了它:-) (4认同)
  • 这只适用于 2.5 及更高版本 (2认同)

Gab*_*leV 6

尝试

sys.exit("message")
Run Code Online (Sandbox Code Playgroud)

它就像 perl

die("message")
Run Code Online (Sandbox Code Playgroud)

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

  • 没有一个答案建议这种方法吗? (4认同)