似乎python支持许多不同的命令来停止脚本执行.
我发现的选择是: quit(),exit(),sys.exit(),os._exit()
我错过了吗?他们之间有什么区别?你什么时候用?
在Python中,有两个同名的函数,exit()和sys.exit().有什么区别,什么时候应该使用一个而不是另一个?
文档说调用sys.exit()会引发一个SystemExit异常,该异常可以在外层捕获.我有一种情况,我想明确地,毫无疑问地退出测试用例,但是unittest模块捕获SystemExit并阻止退出.这通常很好,但我试图处理的具体情况是我们的测试框架检测到它被配置为指向非测试数据库的情况.在这种情况下,我想退出并阻止运行任何进一步的测试.当然,由于unittest陷入了SystemExit的困境并继续开心,它正在挫败我.
到目前为止我唯一想到的选择是使用ctypes或者类似的东西来直接调用exit(3),但这对于一些非常简单的东西来说似乎是一个相当糟糕的黑客.
我已经看到了类似的问题,但没有一个真正解决了引用.如果我有这样的课程
class Stop_if_no_then():
def __init__(self, value one, operator, value_two, then, line_or_label, line_number):
self._firstvalue = value_one
self._secondvalue = value_two
self._operator = operator
self._gohere = line_or_label
self._then = then
self._line_number = line_number
def execute(self, OtherClass):
"code comparing the first two values and making changes etc"
Run Code Online (Sandbox Code Playgroud)
我希望我的执行方法能够做的是,如果self._then不等于字符串"THEN"(在allcaps中),那么我希望它引发自定义错误消息并终止整个程序,同时也不显示追溯.
如果遇到错误,唯一应该打印的东西看起来像(我使用3作为示例,格式化不是问题)这个.
`Syntax Error (Line 3): No -THEN- present in the statement.`
Run Code Online (Sandbox Code Playgroud)
我不是很挑剔它实际上是一个异常类对象,所以在这方面没有问题.因为我将在while循环中使用它,简单如果,elif只是一遍又一遍地重复该消息(因为显然我没有关闭循环).我见过sys.exit(),但是也打印出一个巨大的红色文本块,除非我没有正确使用它.我不想在循环中捕获异常,因为在同一个模块中还有其他类需要实现这样的东西.
在某个函数内部,我想停止整个Lambda进程,但不触发错误。我尝试查看上下文变量以停止它或只是调用它,exit()但是每次将其视为我不想跟踪的错误时。
如何在Python中成功结束Lambda进程?
根据如何在没有回溯的情况下退出Python?,调用sys.exit()Python脚本应该在没有回溯的情况下静默退出.
import sys
sys.exit(0)
Run Code Online (Sandbox Code Playgroud)
但是,当我使用python -i "exit.py"(或从Notepad ++)从 Windows 7上的命令行启动脚本时,SystemExit会显示异常的回溯.
U:\>python -i "exit.py"
Traceback (most recent call last):
File "exit.py", line 2, in <module>
sys.exit(0)
SystemExit: 0
>>>
Run Code Online (Sandbox Code Playgroud)
为什么sys.exit()从Windows命令行运行时显示回溯?
(供参考,我在Windows 7上使用Python 3.6.4)
构建一个简单的 Python 游戏“石头、剪刀、布”以供学习之用。
\n\n我在这里读过一些关于退出 Python 而不进行回溯的其他文章。我正在尝试实现它,但仍然得到回溯!一些 Python 专家可以指出这个 Python 假人出了什么问题吗?这个想法是,单击 RETURN(或输入“yes”或“y”将使程序再次运行 play(),但按 CTRL-C 将关闭它而不进行回溯。I\xc2\xb4m 使用 Python 2.7。
\n\n # modules\n import sys, traceback\n from random import choice\n\n #set up our lists\n ROCK, PAPER, SCISSORS = 1, 2, 3\n names = \'ROCK\', \'PAPER\', \'SCISSORS\'\n\n #Define a function for who beats who?\n def beats(a, b):\n return (a,b) in ((PAPER, ROCK), (SCISSORS, PAPER), (ROCK, SCISSORS))\n\n def play():\n print "Please select: "\n print "1 Rock"\n print "2 Paper"\n print "3 Scissors"\n # player …Run Code Online (Sandbox Code Playgroud) 我试图退出python脚本没有出现恼人的错误消息:
Traceback (most recent call last):
File "<pyshell#27>", line 3, in <module>
sys.exit()
SystemExit
Run Code Online (Sandbox Code Playgroud)
我尝试过很多东西,但都没有.这是一个例子:
while True:
print "hi", #this just tests to see if I have exited.
try:
sys.exit()
except SystemExit:
print "Exited"
Run Code Online (Sandbox Code Playgroud)
注意:解决方案不一定要接近这个代码,这只是我尝试过的一个例子
python ×7
exit ×4
traceback ×3
exception ×2
python-2.7 ×2
aws-lambda ×1
cmd ×1
exit-code ×1
systemexit ×1