嵌套的argparse解析器和帮助消息

时间:2018-09-14 10:38:11

标签: python arguments argparse

情况

一个模块(我们称其为A)实现了一个“主要” argparse解析器,该解析器解析所有子类(使用parser.parse_known_args(argv))通用的已知参数。然后,它将剩余的参数传递给它正在调用的另一个对象。假设它可能是类BC的对象。 BC都有自己的argparse解析器,用于解析其余参数(使用parser.parse_args(argv))。它们采用不同的参数,特定于类BC

A中的示例片段:

parser = argparse.ArgumentParser(
    description="Parent parser",
    formatter_class=argparse.RawTextHelpFormatter,
    allow_abbrev=False
)
parser.add_argument('--argument_A', action="append", default=None,
                          help="Help of first argument of parser A")
known, remaining_args = parser.parse_known_args(argv)
my_obj = self.create_obj(b_or_c, remaining_args)

B中的示例片段:

parser = argparse.ArgumentParser(
        description="Class B parser",
        formatter_class=argparse.RawTextHelpFormatter,
        allow_abbrev=False
    )
    parser.add_argument('--argument_B', action="append", default=None,
                              help="Help of first argument of parser B")
    B_arguments_parsed = parser.parse_args(argv)

C中的示例片段:

parser = argparse.ArgumentParser(
        description="Class C parser",
        formatter_class=argparse.RawTextHelpFormatter,
        allow_abbrev=False
    )
    parser.add_argument('--argument_C', action="append", default=None,
                              help="Help of first argument of parser C")
    C_arguments_parsed = parser.parse_args(argv)

虽然实现传递参数并在正确的位置进行解析很容易,但是我没有找到打印适当帮助的简单解决方案。

问题

如何实现帮助消息,以便我的父解析器(来自类A)打印自己的帮助以及来自解析器BC的帮助?

我希望看到来自解析器A的帮助消息,以及解析器BC的依赖,这取决于选择的对象。

0 个答案:

没有答案