Python 嵌套参数分析器

Python 嵌套参数分析器,python,command-line,argparse,Python,Command Line,Argparse,我正在尝试为命令行工具构建嵌套解析器。我目前正在使用add_subparsers,但对于一个特定的案例来说,它似乎不够强大。我无法向父解析器和子解析器命令添加相同的命名参数。请参见以下示例: import argparse argparser = argparse.ArgumentParser() argparser.add_argument("-H", action="store_true") subparser = argparser.add_subparsers(dest='sp') c

我正在尝试为命令行工具构建嵌套解析器。我目前正在使用
add_subparsers
,但对于一个特定的案例来说,它似乎不够强大。我无法向父解析器和子解析器命令添加相同的命名参数。请参见以下示例:

import argparse

argparser = argparse.ArgumentParser()
argparser.add_argument("-H", action="store_true")
subparser = argparser.add_subparsers(dest='sp')
cmd = subparser.add_parser("cmd")
cmd.add_argument("-H")

print argparser.parse_args()
然后,跑

py test.py -H cmd -H 5
在命令行上给出

Namespace(H='5', sp='cmd')
我希望能有类似的东西

Namespace(H=True, sp={'cmd':Namespace(h='5')})

有没有一种本机方法可以获得类似于此功能的功能,或者我是否需要经历构建自定义argparser的麻烦?谢谢

我想你的问题在这里得到了回答:

我的一个答案使用了自定义操作

但处理重复参数名称的一种更简单的方法是,给出一个或两个不同的“dest”值。它在没有额外机械的情况下区分了两者

argparser = argparse.ArgumentParser()
argparser.add_argument("-H", action="store_true")
subparser = argparser.add_subparsers(dest='sp')
cmd = subparser.add_parser("cmd")
cmd.add_argument("-H", dest='cmd_H')

print argparser.parse_args()