2016-07-17 11 views
1

Argparseディスプレイメッセージ:私は長いリストを渡していたよう無効にargparseの選択肢メッセージこの例のように選択肢のリストについて

import argparse 
parser = argparse.ArgumentParser() 
parser.add_argument('--styles', choices=long_list_of_styles) 

は、ヘルプメッセージが良い見ていない、実際にはそれが混乱に見えるとすべての選択肢が印刷されているため、その存在によって他の議論が隠されています。

Argparserに引数の選択肢を表示しないように指示する方法はありますか?

+1

これは前に既に尋ねられました。リンクされた質問に示すように、カスタムヘルプフォーマッタを使用する必要があります。 – Bakuriu

+0

ありがとうGoogleとは何の結果も得られませんでした。しかし、リンクされた答えの両方のソリューションは複雑すぎます。私は選択肢を削除するだけです。 – vedar

+0

私の提案: 'choices'を使わず、与えられたオプションが選択肢であるかどうかを手動で確認してください。利用可能なスタイルの名前のリストを出力する '--help-styles'のようなオプションを提供して、ユーザがサポートされている選択肢のリストにアクセスできるようにします。 – Bakuriu

答えて

2

提案された複製、Python's argparse choices constrained printing は、比較的複雑な解決策を提示します - カスタムHelpFormatter。またはカスタムtype

高い投票の質問/答えはあなたが[argparse] choices検索でより多くを見つけることができますPython argparse: Lots of choices results in ugly help output

です。

最も簡単な解決策は、metavarパラメータを設定することです。 Nonechoicesスロットに何も表示されますが、あなたはおそらく、私はそこにそれらを一覧表示するヘルプの%(choices)sを含ま

In [8]: styles=['one','two','three','four'] 
In [10]: parser = argparse.ArgumentParser() 
In [11]: parser.add_argument('--styles', metavar='STYLE', choices=styles, 
    ...: help='list of choices: {%(choices)s}') 
Out[11]: _StoreAction(option_strings=['--styles'], dest='styles', nargs=None, const=None, default=None, type=None, choices=['one', 'two', 'three', 'four'], help='list of choices: {%(choices)s}', metavar='STYLE') 

In [12]: parser.print_help() 
usage: ipython3 [-h] [--styles STYLE] 

optional arguments: 
    -h, --help  show this help message and exit 
    --styles STYLE list of choices: {one, two, three, four} 

短い単語にしたいです。もちろん、そこにあなた自身の要約を入れることができます。長いリストは、usageよりもよくフィットします。

+0

あなたがこの回答を他の重複で見つけたとすると、あなたは質問を再開して、もう一度それを再複製するのではなく、もう一方の重複として閉じたはずです... – Bakuriu

+0

'metavar'は、ありがとう – vedar

関連する問題