sys.exit 在 python 控制台中
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 中以相同的方式工作?这是一个 spyder 问题吗?
感谢帮助
您需要导入 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")
不确定这是您应该使用 sys.exit
的目的。这个函数基本上只是抛出一个特殊的异常(SystemExit
),它没有被 python REPL 捕获。基本上它退出 python,然后你回到终端 shell。 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
您好,我在 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 中以相同的方式工作?这是一个 spyder 问题吗?
感谢帮助
您需要导入 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")
不确定这是您应该使用 sys.exit
的目的。这个函数基本上只是抛出一个特殊的异常(SystemExit
),它没有被 python REPL 捕获。基本上它退出 python,然后你回到终端 shell。 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