sys.exit()不会终止我的程序

时间:2012-10-19 07:54:10

标签: python

如果我尝试成功,我想退出Python脚本。我的代码不会退出并继续执行脚本的其余部分。

如果我运行python myscript.py --help,我需要退出脚本。如果我运行python myscript.py,我需要执行except部分。

try:
    if sys.argv[1] == '--help' or sys.argv[1] == '-help' or \
            sys.argv[1] == '-h' or sys.argv[1] == '--h':
        print "NAME"
        sys.exit("Usage : python go.py")
except:
    #REST OF THE CODE.

3 个答案:

答案 0 :(得分:10)

由于docs saysys.exit实际上除了提出SystemExit之外什么都不做,而你最终会截获它。你可以在try-except之外调用sys.exit或者明确地捕获它,然后重新加注。

答案 1 :(得分:5)

为什么要使用try / except块?就像bereal说的那样,你正在捕捉所有异常并隐藏问题。 try / except块用于特殊情况。不是备用代码路径。

def main():
    # main code block

if sys.argv[1] == '--help' or sys.argv[1] == '-help' or \
    sys.argv[1] == '-h' or sys.argv[1] == '--h':
    print "Help text"
else:
    main()

此外,作为使用try / except时的一般规则。抓住你关心的例外。调试一些甚至无法告诉你错误的东西是不可能的。

答案 2 :(得分:1)

作为一般性评论,也许你应该看看使用argparse。 http://docs.python.org/library/argparse.html#module-argparse使用argparse,您不必手动检查argv数组; argparse将为您完成所有工作。