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、最終的にそれを傍受しています。try-except の外で呼び出すかsys.exit、明示的にキャッチしてから再発生させます。

于 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 に答える