[英]sys.exit in python console
嗨,我在python控制台中使用sys.exit有麻烦。 它在ipython上真的很好用。 我的代码大致如下所示:
if name == "lin":
do stuff
elif name == "static":
do other stuff
else:
sys.exit("error in input argument name, Unknown name")
如果知道程序知道在else循环中跳转,它将崩溃并给出错误消息。 如果我使用IPython,一切都会很好,但是如果使用Python控制台,则控制台会冻结,并且必须重新启动它,这很不方便。
我在MAC上将Python 2.7与Spyder一起使用。
是否有解决方法,使我的代码在Python和IPython中以相同的方式工作? 这是间谍问题吗?
感谢帮助
不确定这是您应该使用sys.exit
的目的。 这个函数基本上只会抛出一个特殊的异常( SystemExit
),而该异常不会被python REPL捕获。 基本上,它退出python,然后回到终端外壳。 ipython的REPL 确实捕获了SystemExit
。 它显示该消息,然后返回REPL。
而不是使用sys.exit
您应该执行以下操作:
def do_something(name):
if name == "lin":
print("do stuff")
elif name == "static":
print("do other stuff")
else:
raise ValueError("Unknown name: {}".format(name))
while True:
name = raw_input("enter a name: ")
try:
do_something(name)
except ValueError as e:
print("There was a problem with your input.")
print(e)
else:
print("success")
break # exit loop
您需要导入sys。 以下对我有用:
import sys
name="dave"
if name == "lin":
print "do stuff"
elif name == "static":
print "do other stuff"
else:
sys.exit("error in input argument name, Unknown name")
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.