我正在尝试为命令行工具构建嵌套解析器。我目前正在使用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')})是否有一种本地的方法来获得类似于此功能的东西,还是我必须经历构建一个自定义a解析器的麻烦?谢谢!
发布于 2014-04-20 19:19:52
我想你的问题在这里得到了回答:
argparse subcommands with nested namespaces
我的答案之一使用了自定义操作。
但是,处理重复参数名的一种更简单的方法是给出一个或两个不同的'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()https://stackoverflow.com/questions/23178097
复制相似问题