【发布时间】:2021-11-14 17:21:52
【问题描述】:
我正在尝试将我创建(和测试)的多个自定义 ArgumentParser 嵌套到更大的参数解析器中。
把它想象成一个脚本有多个独立的组件,每个组件都有自己的选项。我为每个参数创建了一个 ArgumentParser,测试了它们是否与单元测试一起正常工作,并希望将一个“母亲”参数解析器拼凑在一起,它可以一次获取所有选项,但它是基于组件的。每个组件都有一些必需的选项,如果我想将它们统一到组中,这会很麻烦。
所以我现在的伪代码是这样的:
def create_custom_parser1():
parser = ArgumentParser()
parser.add_argument('--component1-argument1')
...
def create_custom_parser2():
parser = ArgumentParser()
parser.add_argument('--component2-argument2')
...
def create_unified_parser():
unified = ArgumentParser()
component1_parser = create_custom_parser1()
component2_parser = create_custom_parser2()
# somehow do this:
# unified.add_parsers([component1_parser, component2_parser])
编辑:我的命令超长(它是一个机器学习训练管道 cli),但它有多个独立的组件(例如预处理组件、建模组件等)。我想要的是拥有一个将所有组件解析器缝合在一起的统一命令,但我想从独立的解析器开始,以保持我的理智并使每个解析器独立测试。
【问题讨论】:
-
argparse 只提供了 2 个这样的工具,
parents和subcommands -
@hpaulj 我想通过运行 cli 顺序运行所有这些独立组件。有可能以这种方式吗?我认为子命令用于具有多个可能的命令,但在这里我有一个包含多个组件的超长命令。
标签: python command-line-interface argparse