2016-10-12 20 views
2

argparse Pythonパッケージを使用してサブパートのadd_argumentでデフォルト値を指定していないという問題があります。Argparse:サブパーザーにデフォルト値が表示されていません

いくつかの研究では、各add_argumentステップのために設定され、空でないヘルプのパラメータを必要とし、ここで説明したようにformatter_classとしてArgumentDefaultsHelpFormatterが必要であることを言った:

Argparse: Way to include default values in '--help'?

しかし、私のために働いていないということ。どういうわけか、サブパーサーのデフォルトが抑止されていると思われます。ここで

は例です:サブパーサーを追加するとき

from argparse import ArgumentParser, ArgumentDefaultsHelpFormatter 

parser = ArgumentParser(description="Sample script", formatter_class=ArgumentDefaultsHelpFormatter, version="sample version") 

# Initialize Subparsers 

subparsers = parser.add_subparsers(help="", dest="command") 

# foo command 

fooparser = subparsers.add_parser('foo', help='Do foo') 
fooparser.add_argument('files', action='store', help='Foo file(s)' , nargs="+") 
fooparser.add_argument("-5", "--Do5", type=int, required=False, dest="do5", help="Do 5 subprocedure.") 
fooparser.add_argument("-n", "--topn", type=int, required=False, dest="topn", default=1, help="Show topn") 

# bar command 

barparser = subparsers.add_parser('bar', help='Do bar') 
barparser.add_argument('files', action='store', help='Bar file(s)' , nargs="+") 
barparser.add_argument("-mq", "--min-mq", type=int, required=False, default=2, dest="mq", help="Minimum MQ") 
barparser.add_argument("-mi", "--min-identity", type=float, required=False, default=0.95, dest="identity", help="Minimum identity") 

args = parser.parse_args() 
+0

は、そのリンクで他の回答、ヘルプラインに独自の '%(デフォルト)S'を追加するものを確認してください。フォーマッタクラスは、これを行うための「怠け者」の方法です。 :) – hpaulj

+0

はい私は%(デフォルト)について知っていましたが、私は怠惰な人の解決策を望んでいました;) –

答えて

2

formatter_classを指定します。

subparsers = parser.add_subparsers(help="", dest="command") 

fooparser = subparsers.add_parser('foo', help='Do foo', 
            formatter_class=ArgumentDefaultsHelpFormatter) 
... 

barparser = subparsers.add_parser('bar', help='Do bar', 
            formatter_class=ArgumentDefaultsHelpFormatter) 
... 

python argparse_test.py --help fooの出力:

usage: argparse_test.py foo [-h] [-5 DO5] [-n TOPN] files [files ...] 

positional arguments: 
    files     Foo file(s) 

optional arguments: 
    -h, --help   show this help message and exit 
    -5 DO5, --Do5 DO5  Do 5 subprocedure. (default: None) 
    -n TOPN, --topn TOPN Show topn (default: 1) 
+0

この解決策はhttp://bugs.python.org/issue21633で提案されました – hpaulj

+0

ありがとうございます、 –

関連する問題