187

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

例如:

done = True
if done:
    # quit/stop/exit
else:
    # do other stuff

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

4

8 回答 8

313

要退出您可以使用的脚本,

import sys
sys.exit()

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

import sys
sys.exit(0)

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

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

打印“aa!错误!” 并以状态码 1 退出。

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

Python 文档表明 os._exit() 是结束通过调用 os.fork() 创建的子进程的正常方法,因此它在某些情况下确实有用。

于 2008-10-07T17:49:22.147 回答
20

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

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

if __name__ == "__main__":
  #Run as main program
  main()
于 2008-10-07T17:27:23.890 回答
19
import sys
sys.exit()
于 2008-10-07T16:49:25.527 回答
19

您可以使用:

import sys
sys.exit(...)

或者:

raise SystemExit(...)

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

于 2008-10-07T18:11:22.367 回答
6

尝试

sys.exit("message")

就像 perl

die("message")

如果这是您正在寻找的。即使从导入的模块 / def /function 调用它也会终止脚本的执行

于 2010-01-26T11:26:27.460 回答
4

exit() 应该可以解决问题

于 2008-10-07T16:48:19.227 回答
3

exit() 应该这样做。

于 2008-10-07T16:48:22.860 回答
3

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

于 2008-10-07T16:49:15.683 回答