为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕斯709654 2021-07-09 14:06:11
我正在使用 Python 3.6.3 并有这段代码:import argparsefrom argparse import RawTextHelpFormatterparser = 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()帮助输出如下所示:$ ./foobar  -husage: foobar [-h] [-lf LOGFILE] {abcd} ...positional arguments:  {abcd}optional arguments:  -h, --help            show this help message and exit  -lf LOGFILE, --logfile LOGFILE                        some very long help message goes here ..............................                        more text here xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx上面的输出没有按预期包装帮助文本(除非我明确输入了“\n”)但是,子解析器的帮助输出如下所示:$ ./foobar  abcd  -husage: foobar abcd [-h] zzz [zzz ...]positional arguments:  zzz         A very long help message goes here...... more help text goes              here zzzzzzz zzzzzzzzzzzzzzzzzzzzzzzoptional arguments:  -h, --help  show this help message and exit我如何才能将“转到此处”打印在新行上(我指定了“\n”但没有用)如何禁用换行,以便“zzz”参数的整个帮助文本在一行上?
查看完整描述

1 回答

?
慕慕森

TA贡献1856条经验 获得超17个赞

您需要为子formatter_class解析器提供与提供给主解析器的相同的子解析器,您可以通过传递formatter_classadd_parser

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


查看完整回答
反对 回复 2021-07-13
  • 1 回答
  • 0 关注
  • 382 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信