终止Python程序

6 投票
8 回答
37699 浏览
提问于 2025-04-15 12:02

在Python中,你用什么命令来结束一个程序呢?

就像在BASIC里用“end”,或者在BASH里用“quit”一样。

我看到“break”是用来跳出循环的,而“quit”又和“class”这些我还不太懂的东西扯上关系。

我试过

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

有没有什么解决办法呢?

8 个回答

10

你也应该考虑其他的退出方式。通常情况下,如果把代码放在一个函数里,使用return也能达到同样的效果。其实这样更好,因为它可以避免使用sys.exit()时的一些奇怪问题。

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

main()
12

sys.exit() 会引发一个叫 SystemExit 的异常。

如果你不处理这个异常,程序就会结束。

既然你看到了这个输出,我不太确定发生了什么,但我猜测你可能是把所有的异常都捕捉了,然后自己打印出来:

try:
    ...
except:
    print exception somehow
    raise

如果是这样的话,最好不要这样做。应该改为捕捉 Exception

...
    except Exception:
        ...

这样的话,你就不会捕捉到那些不应该被捕捉的东西(比如 SystemExit)。

13

sys.exit(error_code)

这里的 error_code 是用来表示程序退出的状态的。正常退出时,error_code 是 0;如果因为某种错误退出,比如用户输入了错误的参数,error_code 就是 1 或其他正数。

在某些系统上,sys.exit() 可能会出现问题(不过我在我的 Linux 电脑上用的时候是没问题的!)

官方的 Python 文档 对这个内容有更详细的解释。

建议你在写程序和脚本时都遵循返回码的约定:0 表示一切正常,其他数字表示有错误(通常是 1)。

举个例子,如果你运行一个脚本从数据库中获取数据;返回 0 并且没有输出,说明数据库没问题,只是里面没有数据(或者没有符合你查询条件的数据)。如果返回 1 并且没有输出,那就说明数据库出现了故障,整个过程应该停止,因为继续下去可能会影响其他系统。

撰写回答