gpt4 book ai didi

python - 有没有办法在 argparse 中添加一个已经创建的解析器作为子解析器?

转载 作者:太空狗 更新时间:2023-10-30 01:16:16 26 4
gpt4 key购买 nike

通常,要在 argparse 中添加一个子解析器,您必须这样做:

parser = ArgumentParser()
subparsers = parser.add_subparser()
subparser = subparsers.add_parser()

我遇到的问题是我试图添加另一个命令行脚本,它有自己的解析器,作为我的主脚本的子命令。有没有简单的方法可以做到这一点?


编辑:为了澄清,我有一个看起来像这样的文件 script.py:

def initparser():
parser = argparse.ArgumentParser()
parser.add_argument('--foo')
parser.add_argument('--bar')
return parser

def func(args):
#args is a Namespace, this function does stuff with it

if __name__ == '__main__':
initparser().parse_args()

所以我可以这样运行:

python script.py --foo --bar

我正在尝试编写一个模块app.py,它是一个带有多个子命令的命令行界面,因此我可以运行如下内容:

python app.py script --foo --bar

与其将所有 initparser() 逻辑复制并粘贴到 app.py,我希望能够直接使用我创建的解析器initparser() 作为子解析器。这可能吗?

最佳答案

你可以使用parents参数

p=argparse.ArgumentParser()
s=p.add_subparsers()
ss=s.add_parser('script',parents=[initparser()],add_help=False)
p.parse_args('script --foo sst'.split())

ss 是一个解析器,它共享为 initparser 定义的所有参数。 ssinitparser 需要 add_help=False,因此 -h 没有定义两次。

关于python - 有没有办法在 argparse 中添加一个已经创建的解析器作为子解析器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14988397/

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