2

如果我的尝试成功,我想退出 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.
4

3 回答 3

10

正如文档所说sys.exit实际上除了提高之外什么都不做SystemExit,你最终会拦截它。您要么sys.exit在 try-except 之外调用,要么明确地捕获它,然后重新加注。

于 2012-10-19T07:59:34.690 回答
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 时。只需捕获您关心的异常即可。无法调试甚至无法告诉您出了什么问题的东西。

于 2012-10-19T08:04:53.187 回答
1

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

于 2012-10-19T09:20:03.423 回答