终止Python程序
在python中,您使用什么命令来终止程序 i、 e.在basic中相当于“end”,在BASH中相当于“quit” 我知道“休息”会让你走出一个循环,“退出”和我还不理解的“类”的东西联系在一起。 我试过了 但它将显示以下错误:终止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
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