Как получить подмножество аргументов argparse в коде - PullRequest
0 голосов
/ 14 марта 2019

Я хотел бы получить подмножество проанализированных аргументов и отправить их другой функции в 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 голосов
/ 14 марта 2019

Я не знаю, существует ли более простое решение, но вы можете создать собственный объект «пространства имен», выбирая только те аргументы ключей, которые вам нужны, из проанализированных аргументов.

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

Вы можете настроить предложение if в соответствии со своими потребностями и, возможно, изменить имена аргументов k, например. удаление префикса foo_.

...