8

なぜこれらの引数をargparseで解析しないのですか?

--foo 1 2 3 bar

使用する

parser = argparse.ArgumentParser()
parser.add_argument('--foo', nargs='+')                  
parser.add_argument('bar')

これにより、次のエラーが発生します。

エラー:引数が少なすぎます

ただし、最初にbar引数を渡すと、次のように機能します。

bar --foo 1 2 3   

さて、これ自体はそれほど悪くはありません。私は最初に位置引数を持って生きることができます。それは、この動作がargparseが作成するヘルプと矛盾しているということです。これは、バーが最後である必要があることを示しています。

使用法:argparsetest.py [-h] [--foo FOO[FOO...]]バー

では、一貫したヘルプテキストを使用してこれをどのように機能させるのでしょうか。

これが完全なテストプログラムです。

4

2 に答える 2

4

nargs='+'残りのすべての引数をまとめるようにargparseに指示するため、bar含まれます。barそれは、あなたがそれ自体で意味のある議論であり、に取られた引数の一部ではないことを意図していると推測する魔法の方法はありません--foo

ドキュメントの例は、 。を使用した--fooものではなく、単純な引数を参照していnargs='+'ます。違いを必ず理解してください。

于 2011-05-02T08:22:10.740 に答える
3

たぶん、add_argumentで--input --outputフラグを実行し、それらのオプションをrequired =Trueに設定してみてください。

http://docs.python.org/dev/library/argparse.html#the-add-argument-method

于 2011-05-02T08:51:03.410 に答える