Python 如何使argparse解析器也起到子parser的作用

Python 如何使argparse解析器也起到子parser的作用,python,argparse,Python,Argparse,假设我已经定义了一些解析器: foo_parser = argparse.ArgumentParser() foo_parser.add_argument('-f') bar_parser = argparse.ArgumentParser() bar_parser.add_argument('-b') 现在我希望这些解析器显示为子解析器 parser = argparse.ArgumentParser(prog='parent') subparsers = parser.add_subpa

假设我已经定义了一些解析器:

foo_parser = argparse.ArgumentParser()
foo_parser.add_argument('-f')

bar_parser = argparse.ArgumentParser()
bar_parser.add_argument('-b')
现在我希望这些解析器显示为子解析器

parser = argparse.ArgumentParser(prog='parent')
subparsers = parser.add_subparsers()

subparsers.add_parser('foo')   # how can I associate these subparsers 
subparsers.add_parser('bar')   # with my foo and bar parsers already defined?
我知道我可以通过重复所有的add_参数调用来实现这一点,但我希望能找到一个简单的解决方案

argparse是否允许这样做,或者我必须重新定义我的子parser


我问这个问题的原因是,我有一个独立脚本的集合,我不想使用它,但我也想通过提供一个统一的接口。我想从每个独立脚本导入解析器,并使它们在统一界面中充当子解析器。

您是否尝试过
父脚本
机制?这是一种用另一个解析器的参数(和组)填充新解析器(包括子解析器)的方法。有些人甚至将其用作向多个子parser添加参数子集的一种方式。它通过引用复制参数(操作对象)。通常情况下,这是可行的,但它对自定义参数施加了限制

==================

使用以下方法创建子Parser:

class _SubParsersAction(Action):
    def add_parser(self, name, **kwargs):
       ....
       parser = self._parser_class(**kwargs)
       ....
       return parser

理论上,它可以定制为使用预定义的解析器,而不是创建新的解析器。调试这样的更改可能需要半个小时。

您可以在单独的方法中添加参数,然后重用或派生该方法。