Python argparse:如何控制子parser帮助屏幕中的行换行?

2024-04-25 10:15:31 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用的是Python 3.6.3,有以下代码:

import argparse
from argparse import RawTextHelpFormatter

parser = argparse.ArgumentParser(prog='foobar',
                                     formatter_class=RawTextHelpFormatter)
parser.add_argument('-lf', '--logfile', dest='logfile', default='/dev/null',
                    help='some very long help message goes here ..............................\n' +
                   'more text here xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx')

subparsers = parser.add_subparsers()
abcd_parser = subparsers.add_parser('abcd')

abcd_parser.add_argument('zzz', nargs='+',
                         help='A very long help message\ngoes here...... more help text goes here zzzzzzz   zzzzzzzzzzzzzzzzzzzzzzz  ')


args = parser.parse_args()

帮助输出如下所示:

^{pr2}$

上面的输出没有如预期那样包装帮助文本(除了我显式输入“\n”的地方)

但是,子parser的帮助输出如下所示:

$ ./foobar  abcd  -h
usage: foobar abcd [-h] zzz [zzz ...]

positional arguments:
  zzz         A very long help message goes here...... more help text goes
              here zzzzzzz zzzzzzzzzzzzzzzzzzzzzzz

optional arguments:
  -h, --help  show this help message and exit
  1. 如何将“goes here”打印到新行(我指定了“\n”,但这不起作用)
  2. 如何禁用换行,以便“zzz”参数的整个帮助文本在一行上?在

Tags: textaddparsermessageheremoreargparsehelp
1条回答
网友
1楼 · 发布于 2024-04-25 10:15:31

您需要给子parser提供与主解析器相同的formatter_class,这可以通过将formatter_class传递给add_parser来实现:

abcd_parser = subparsers.add_parser('abcd', formatter_class=RawTextHelpFormatter)

相关问题 更多 >

    热门问题