终止Python程序

时间:2009-06-04 09:35:07

标签: python

你在python中使用什么命令来终止程序?

即。相当于基础中的“结束”,或BASH中的“退出”。

我看到“休息”会让你走出一个循环,而“退出”就会被我所不理解的“阶级”东西所束缚。 我试过了

import sys
sys.exit()

但会显示以下错误:

Traceback (most recent call last):
  File "C:\Documents and Settings\....\Desktop\current file_hand\Python_1.py", line 131, in <module>
    sys.exit()
SystemExit

是否有任何解决方案。

7 个答案:

答案 0 :(得分:12)

sys.exit()引发SystemExit例外。

如果您没有捕获该异常,则程序结束。

由于你得到了那个输出,我不确定发生了什么,但我想你正在捕捉所有异常并自己打印出来:

try:
    ...
except:
    print exception somehow
    raise

如果是这种情况,请不要这样做。改为抓住Exception

...
    except Exception:
        ...

这样你就不会捕捉到不想捕获的东西(比如SystemExit)。

答案 1 :(得分:11)

sys.exit(error_code)

对于正常退出,Error_code将为0,由于某种错误,例如出口的1或其他正数,例如用户输入了错误的参数。

sys.exit()“在某些体系结构上未定义”,(虽然它在我的Linux机器上尝试时有效!)

official python docs更全面地解释了这一点。

所有程序和脚本遵循返回代码约定是一个非常好的主意; 0表示正常,其他表示错误,(通常为1)

例如,如果您运行一个从数据库中获取某些数据的脚本;返回0并且没有输出,意味着数据库完全正常,其中没有任何内容(或者没有与您的查询匹配)。返回1并且没有输出意味着数据库出现故障,整个过程应该中止,因为继续会破坏其他系统。

答案 2 :(得分:8)

您还应该考虑直接退出的替代方案。如果将代码包装在函数中,return通常也可以正常工作。 (事实上​​,更好,因为它避免了sys.exit()的怪异。)

def main():
    ...do something...
    if something:
        return               # <----- return takes the place of exit
    ...do something else...

main()

答案 3 :(得分:3)

sys.exit() #to exit the program
return     #to exit from a function

答案 4 :(得分:2)

导入sys

sys.exit(0)

答案 5 :(得分:1)

尝试从IDE运行python解释器。在我的Windows安装中,简单的命令行python.exe,两个选项都有效:

>>> import sys
>>> sys.exit()

>>> raise SystemExit

答案 6 :(得分:1)

在您的情况下,您的错误可能是您有一个正在捕获SystemExit异常的裸除块,如下所示:

import sys
try:
  sys.exit(return_code)
except:
  pass

解决问题的正确方法是删除除了部分,而只是捕获您可能会引发的异常。例如:

try:
  # Code which could raise exceptions
except (NameError, ValueError):
  # Do something in case of NameError or ValueError, but
  # ignore other exceptions (like SystemExit)

但是,如果您真的希望程序退出,则以下代码将起作用:

import os
try:
  os._exit(return_code)
except:
  pass

即使使用 except:子句,它也会退出,因为它只是直接调用杀死进程的同名C函数。这是不推荐,除非您知道自己在做什么,因为这不会调用清理处理程序或刷新打开的IO缓冲区。