我是Python的新手,我正在尝试使用exit
中的sys
函数,但不知怎的,它在我的计算机上无法正常工作。这是我的代码:
from sys import exit
userResponse = input ("n or y?")
if not (userResponse =="n" or userResponse =="y") :
exit ("ERROR")
答案 0 :(得分:1)
你必须正确缩进:
if not (userResponse =="n" or userResponse =="y") :
exit('Error')
您还可以引发异常以获取更具描述性的错误消息:
userResponse = input ("n or y?")
if not (userResponse =="n" or userResponse =="y") :
raise ValueError('Does not work')
答案 1 :(得分:1)
退出会引发SystemExit
个异常;这就是它终止程序的方式。您的环境在终止后显示该异常不是一个错误,它只是向您显示原因。我同意你的意见(例如,this PEP),默认行为应该是不打印出此异常的追溯消息,以及KeyboardException
但最终,执行停止了,因为它的目的是为了做。
有关详细信息,请参阅文档: https://docs.python.org/2/library/sys.html#sys.exit
此处的一些答案最初表明您无法将字符串传递给exit
。这是错误的:来自文档(强调我的)
可选参数arg可以是一个整数,给出退出状态(默认为零)或其他类型的对象。如果它是整数,则零被认为是“成功终止”,并且任何非零值被贝壳等视为“异常终止”。大多数系统要求它在0-127范围内,并产生未定义的结果,否则....如果传递另一种类型的对象,则无效等于传递零,并且任何其他对象被打印到stderr并导致退出代码为1. 特别是,sys.exit(“某些错误消息”)是发生错误时退出程序的快捷方法。
内置exit
函数做同样的事情。通常,通过从模块导入来遮蔽内置函数并不是很好,尽管在这种情况下它并不重要。推荐的风格是
import sys
sys.exit("My exception")
如果这似乎不直观,您可以使用os._exit绕过异常处理。不要没有原因
答案 2 :(得分:0)
跟进@MrCarnivore ......
from sys import exit
userResponse = raw_input("n or y?")
if not (userResponse =="n" or userResponse =="y"):
print('Error Message Here')
exit(1)
答案 3 :(得分:0)
在尝试退出脚本而没有引发异常时,我遇到了问题。最适合我的情况的是os._exit(exitcode)
。