【发布时间】:2016-04-13 09:59:27
【问题描述】:
我正在尝试使用 argparse 制作解析器,而不是可以解析以下命令:
python prog.py update <DOMAIN> <ENVIRONMENT>
python prog.py pull <DOMAIN> <ENVIRONMENT>
python prog.py release <DOMAIN> <ENVIRONMENT>
如您所见,update、pull 和 release 都采用相同的参数 <DOMAIN> 和 <ENVIRONMENT>。
这三个都是主解析器的子解析器。
我写了以下内容:
import argparse
# create the top-level parser
parser = argparse.ArgumentParser(prog='PROG', add_help=False)
parser.add_argument('domain', type=str, help='domain help')
parser.add_argument('environment', type=str, help='environment help')
#subparsers
subparsers = parser.add_subparsers(help='sub-command help', parents=[parser])
parser_pull = subparsers.add_parser('pull', help='pull help')
parser_update = subparsers.add_parser('update', help='update help')
print parser_pull.parse_args(['pull', 'WEBAPPS', 'DEV'])
print parser.parse_args(['update', 'WEBAPPS', 'DEV'])
但似乎 domain 和 environment 应该在子命令 update、pull 和 之前释放,所以它会抛出一个错误。
我怎样才能让它在子命令之后接受这些参数,而不在每个子命令中复制代码?
为了记录,我使用 Python 2.7。
【问题讨论】:
标签: python argparse python-2.x