2017-01-20 4 views
0

持つ単一の引数のカスタム使用方法の説明文執筆:私は現在、このようになります使用ステートメント出力argumentParser持っNARGS> 1

usage: body arm hand [-h] finger finger finger finger finger 

ボディーがメインのパーサーですが、その後、アームがsubparserで、手はサブパーザのサブパーザです。 Fingerは5つの入力を受け入れる引数を表します。

1つの引数に組み込みのargparse関数を使用してカスタム使用法を書く方法はありますか?次のようになります。

usage: body arm hand [-h] thumb index middle ring pinky 

ありがとうございます!

答えて

2

タプルmetavarは、ジョブ

In [270]: p = argparse.ArgumentParser(prog='prog') 
In [271]: p.add_argument('finger', nargs=5, 
    metavar=('thumb', 'index', 'middle', 'ring', 'pinky')); 
In [272]: p.print_usage() 
usage: prog [-h] thumb index middle ring pinky 

それはタプルではなく、リストにする必要があり、かつnargsと同じ長さを持たなければならないを行う必要があります。 argparseドキュメントのmetavarを確認してください。

+0

助けてくれてありがとう!私はそれがドキュメント上で正しいことを認識しました。それは、それが '解凍するにはあまりにも多くの値をスローする'ので、タプルが私のために働いていないようだ。 – msun

+0

あなたの 'nargs'は何ですか?私は希望のディスプレイから5と仮定した。 – hpaulj

+0

私は3つあり、サイズ3のタプルを使用しています。この行はparser.add_argument( 'ipmi'、nargs = 3、metavar =( 'user'、 'host'、 'pwd'))です。これは私が使用しているラッパー関数に固有のものかもしれないので、この問題とはまったく関係がありません。しかし、metavarを指摘してくれてありがとう! – msun

関連する問題