【发布时间】:2017-05-13 04:29:41
【问题描述】:
我正在为带有各种子解析器的 python 模块编写参数解析器。我的目标是有一个共享的参数,其参数构造函数被传递给多个孩子:
from argparse import ArgumentParser
parser = ArgumentParser(prog = 'master')
parser1 = ArgumentParser(help = None)
parser1.add_argument('foo', type = int, help = 'Number of times to process %(prog)s') # Line of interest
parser2 = ArgumentParser(help = None)
parser2.add_argument('--bar', type = int, default = 0, help = 'Start at this number')
parser3 = ArgumentParser(help = None)
parser3.add_argument('--baz', type = str, default = 'DEFAULT', help = 'Init file with this text')
subparsers = parser.add_subparsers()
sp1 = subparsers.add_parser('prog1', parents = [parser1, parser2])
sp2 = subparsers.add_parser('prog2', parents = [parser1, parser3])
parser.parse_args('prog1 -h'.split())
所需的输出类似于
usage: master prog1 [-h] [--bar BAR] foo
positional arguments:
foo Number of times to process prog1
optional arguments:
-h, --help show this message and exit
--bar Start at this number
当我使用这个精确设置时,我在foo 的帮助字符串中得到master prog1 而不是prog1。我应该在标记为#Line of interest 的行中进行哪些更改以获得所需的结果?
【问题讨论】:
标签: python argparse subparsers