繁体   English   中英

python控制台中的sys.exit

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM