2015-10-09 5 views
0

Если у меня есть Argparse установки, как следующее:Как передать под-аргументы функции по умолчанию для пар-парсера?

parser = argparse.ArgumentParser(description='test.') 
subparsers = parser.add_subparsers(help='sub-command help') 

parser_somethingX = subparsers.add_parser('somethingX', help='generate X') 
parser_somethingY = subparsers.add_parser('somethingY', help="generate Y") 

parser_somethingZ = subparsers.add_parser('somethingZ', help='generate Z') 
parser_somethingZ.add_argument('N', type=int,help='times to loop') 
parser_somethingZ.set_defaults(func=execute_z) 

args = parser.parse_args() 

Давайте предположим, что пользователь вызывает мой сценарий с:

myScript.py somethingZ 1000 

Что такое правильное/наилучшей практике, как назвать мой функция execute_z но также передать его под-аргумент N?

Обратите внимание, что для суб аргумента somethingZ Я настроил вызов функции по умолчанию, чтобы быть execute_z, но как я могу передать эту функцию необходимые Followup суб-аргументов, а? А именно, n? Поскольку определение функции является:

def execute_z(n): 
    # n is an integer value definining number of times to loop 

Типичный вызов мой сценарий будет:

myScript.py somethingZ 300 

Как передать в somethingZ?

ответ

0

Я думал, что пример argparse с использованием setdefaults объяснил, как использовать эту функцию?

Посмотрите на args. Это, вероятно, выглядит как-то

Namespace(func=execute_z, N=1000) 

Таким образом, вы должны быть в состоянии использовать:

args.func(args.N) 
Смежные вопросы