私はいくつかのargparseコードをテストしています。n
選択肢のリストから入力の数を収集するオプションの引数が必要でした。だから、私は書いた:
import argparse
modules = ["geo", "loc"]
parser = argparse.ArgumentParser()
parser.add_argument("--modules", nargs='*', choices=modules)
この設定で、私は確実に通訳者を完全に殺すことができます。
有効な引数のセットを渡せば、正常に機能します。
>>> parser.parse_args("--module geo loc geo".split())
Namespace(modules=['geo', 'loc', 'geo'])
しかし、誤って形成された引数を渡すと、Pythonは完全に強制終了されます。
>>> parser.parse_args("--module geo metro".split())
usage: [-h] [--modules [{geo,loc} [{geo,loc} ...]]]
: error: argument --modules: invalid choice: 'metro' (choose from 'geo', 'loc')
PS C:\Users\myname\mycode>
私の質問は2つあります。
- これは予想される動作ですか?もしそうなら、これの理由は何ですか?
- プログラムが不正な引数で終了してもかまわないので、このコードを使用しても大丈夫ですか?それとも、これを避けるための説得力のある理由がありますか?
注意として、私はWindows7でPython2.7を使用しています。