如何在代码中获取argparse参数的子集

时间:2019-03-14 10:34:02

标签: python argparse

我想获取已解析参数的子集,并将其发送到python中的另一个函数。我找到了这个argument_group的主意,但找不到联系论点的人群。这是我想尝试做的:

import argparse
def some_function(args2):
    x = args2.bar_this
    print(x)

def main(): 
    parser = argparse.ArgumentParser(description='Simple example')
    parser.add_argument('--name', help='Who to greet', default='World')
    # Create two argument groups
    foo_group = parser.add_argument_group(title='Foo options')
    bar_group = parser.add_argument_group(title='Bar options')
    # Add arguments to those groups
    foo_group.add_argument('--bar_this')
    foo_group.add_argument('--bar_that')
    bar_group.add_argument('--foo_this')
    bar_group.add_argument('--foo_that')
    args = parser.parse_args()
    # How can I get the foo_group arguments for example only ?
    args2 = args.foo_group
    some_function(args2)

1 个答案:

答案 0 :(得分:0)

我不知道是否存在一个更简单的解决方案,但是您可以创建一个自定义的“命名空间”对象,仅从解析的参数中选择所需的键参数。

args2 = argparse.Namespace(**{k: v for k, v in args._get_kwargs()
                              if k.startswith("foo_")})

您可以根据需要自定义if子句,并可能更改参数名称k,例如删除foo_前缀。