gpt4 book ai didi

python - 嵌套参数解析器

转载 作者:行者123 更新时间:2023-11-30 23:24:57 30 4
gpt4 key购买 nike

我正在尝试为命令行工具构建嵌套解析器。我目前正在使用 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 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()

关于python - 嵌套参数解析器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23178097/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com