Argparseは、位置およびオプションのパラメーターの誤った順序です
-
27-10-2019 - |
質問
Argparseがこれらの議論を解析しないのはなぜですか?
--foo 1 2 3 bar
使用
parser = argparse.ArgumentParser()
parser.add_argument('--foo', nargs='+')
parser.add_argument('bar')
次のエラーが発生します。
エラー:引数が少なすぎます
しかし、最初にバーの引数を渡すと、それは動作します:
bar --foo 1 2 3
今、これ自体はそれほど悪くはありません。私は最初に位置的な議論をすることで生きることができます、それはこの行動が私たちのために作成するヘルプと矛盾しているということです。
使用法:argparsetest.py [-h] [ - foo foo [foo ...]] bar
では、一貫したヘルプテキストでこれをどのように機能させますか?
これが完全です テストプログラム.
解決
-input -Outputフラグを実行して、それらのオプションを設定して、add_argumentで必要な= trueに設定してみてください。
http://docs.python.org/dev/library/argparse.html#the-add-argument-method
他のヒント
nargs='+'
Argparseに、残りのすべてのargを一緒に収集するように言うので、 bar
含まれています。あなたが意図する魔法の方法はありません bar
それ自体によって意味のある議論であり、 --foo
.
ドキュメントの例は、単純なものを指します --foo
議論、ではなく nargs='+'
. 。違いを必ず理解してください。
所属していません StackOverflow