首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >嵌套ArgumentParser

嵌套ArgumentParser
EN

Stack Overflow用户
提问于 2014-04-20 03:26:14
回答 1查看 454关注 0票数 1

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

代码语言:javascript
运行
复制
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()

然后,跑

代码语言:javascript
运行
复制
py test.py -H cmd -H 5

在命令行上

代码语言:javascript
运行
复制
Namespace(H='5', sp='cmd')

我希望能有这样的东西

代码语言:javascript
运行
复制
Namespace(H=True, sp={'cmd':Namespace(h='5')})

是否有一种本地的方法来获得类似于此功能的东西,还是我必须经历构建一个自定义a解析器的麻烦?谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-04-20 19:19:52

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

argparse subcommands with nested namespaces

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

但是,处理重复参数名的一种更简单的方法是给出一个或两个不同的'dest‘值。它不需要额外的机器就能区分两者。

代码语言:javascript
运行
复制
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()
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23178097

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档