Nested ArgumentParser



我正在尝试为命令行工具构建嵌套的解析器。我目前使用的是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的麻烦?谢谢

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

带有嵌套命名空间的argparse子命令

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

但是,处理重复参数名称的一种更简单的方法是给定一个或两个不同的"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()

相关内容

  • 没有找到相关文章

最新更新