Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
终止Python程序_Python - Fatal编程技术网

终止Python程序

终止Python程序,python,Python,在python中,您使用什么命令来终止程序 i、 e.在basic中相当于“end”,在BASH中相当于“quit” 我知道“休息”会让你走出一个循环,“退出”和我还不理解的“类”的东西联系在一起。 我试过了 但它将显示以下错误: Traceback (most recent call last): File "C:\Documents and Settings\....\Desktop\current file_hand\Python_1.py", line 131, in <mod

在python中,您使用什么命令来终止程序

i、 e.在basic中相当于“end”,在BASH中相当于“quit”

我知道“休息”会让你走出一个循环,“退出”和我还不理解的“类”的东西联系在一起。 我试过了

但它将显示以下错误:

Traceback (most recent call last):
  File "C:\Documents and Settings\....\Desktop\current file_hand\Python_1.py", line 131, in <module>
    sys.exit()
SystemExit
回溯(最近一次呼叫最后一次):
文件“C:\Documents and Settings\..\Desktop\current File\u hand\Python\u 1.py”,第131行,在
sys.exit()
系统出口
是否有解决方案。

系统退出(错误代码)

对于正常退出,错误代码为0;对于由于某种错误(例如,用户输入了错误的参数)导致的退出,错误代码为1或其他正数

sys.exit()“在某些体系结构上是未定义的”(尽管在我的Linux机器上尝试它时它起了作用!)

报告对此作了更充分的解释

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


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

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

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

sys.exit()
引发
SystemExit
异常

如果没有捕获到该异常,程序将结束

由于您获得了该输出,我不确定发生了什么,但我猜您正在捕获所有异常并自己打印它们:

try:
    ...
except:
    print exception somehow
    raise
如果是这样的话,不要那样做。捕获
异常

...
    except Exception:
        ...
这样,您就不会捕获不需要捕获的内容(如
SystemExit
)。

import sys


sys出口(0)

< P>你也应该考虑直接退出的替代方案。通常,如果将代码包装到函数中,
return
也同样有效。(实际上更好,因为它避免了sys.exit()的怪异。)

def main():
…做点什么。。。
如果某事:

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

import sys
try:
  sys.exit(return_code)
except:
  pass
解决问题的正确方法是删除except:部分,而只捕获可能引发的异常。例如:

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缓冲区。

您是否以交互方式使用Python?从>>>提示符?或者运行脚本?可能有一个IDE—IDLE或ActivePython—可以捕获所有内容,因为它们在进程中运行脚本。对于Python 2.5+,这是正确的。但是,SystemExit确实继承了Python 2.4及更早版本中的异常。在错误处理代码中永远不要捕获
异常
,而要捕获
标准错误
,所有错误异常都从中继承(因为至少v2.0:)。+1使用return语句。使用return语句(带或不带返回值)意味着您的python程序可以在交互式会话中使用,或者作为其他脚本的一部分使用。我对调用sys.exit并将我从Python解释器中转储的脚本感到非常恼火。
sys.exit() #to exit the program
return     #to exit from a function
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
sys.exit() #to exit the program
return     #to exit from a function