11

この質問は以前に尋ねられた質問に関連していますが、無関係である可能性があります。質問は次のとおりです。サブパーサーを使用する場合、以下の(実際の)例のヘルプテキストで改行を使用するにはどうすればよいですか?

import argparse

parser = argparse.ArgumentParser(formatter_class=argparse.RawTextHelpFormatter)

subparsers = parser.add_subparsers()

parser_start = subparsers.add_parser('stop')
parser_start.add_argument("file", help = "firstline\nnext line\nlast line")

print parser.parse_args()

私の出力は次のとおりです。

tester.py  stop -h
usage: tester.py stop [-h] file

positional arguments:
  file        firstline next line last line

optional arguments:
  -h, --help  show this help message and exit

ヘルプの期待される出力は次のようにfileなります。

first line
next line
last line
4

1 に答える 1

11

このsubparsers.add_parser()メソッドは、と同じArgumentParserコンストラクター引数を取りますargparse.ArgumentParser()。したがって、サブパーサーにを使用するには、サブパーサーを追加するときに明示的にRawTextHelpFormatter設定する必要があります。formatter_class

>>> import argparse
>>> parser = argparse.ArgumentParser(formatter_class=argparse.RawTextHelpFormatter)
>>> subparsers = parser.add_subparsers()

次の行を変更してformatter_class、サブパーサーのを設定します。

>>> parser_start = subparsers.add_parser('stop', formatter_class=argparse.RawTextHelpFormatter)

これで、ヘルプテキストに改行が含まれます。

>>> parser_start.add_argument("file", help="firstline\nnext line\nlast line")
_StoreAction(option_strings=[], dest='file', nargs=None, const=None, default=None, type=None, choices=None, help='firstline\nnext line\nlast line', metavar=None)

>>> print parser.parse_args(['stop', '--help'])
usage:  stop [-h] file

positional arguments:
  file        firstline
              next line
              last line

optional arguments:
  -h, --help  show this help message and exit
于 2013-03-20T18:21:42.063 に答える