2017-01-20 3 views
0

У меня есть argumentParser, что в настоящее время выдает заявление об использовании, который выглядит следующим образом:Написание заявления на заказ использования для одного аргумента с nargs> 1

usage: body arm hand [-h] finger finger finger finger finger 

тела является основным парсер, то рука является subparser, и рука является подпараметром подпараметра. Finger представляет аргумент, который принимает пять входов.

Есть ли способ написать пользовательские инструкции использования со встроенными функциями argparse для одного аргумента? Он должен выглядеть так:

usage: body arm hand [-h] thumb index middle ring pinky 

Спасибо!

ответ

2

Кортеж metavar должен сделать работу

In [270]: p = argparse.ArgumentParser(prog='prog') 
In [271]: p.add_argument('finger', nargs=5, 
    metavar=('thumb', 'index', 'middle', 'ring', 'pinky')); 
In [272]: p.print_usage() 
usage: prog [-h] thumb index middle ring pinky 

Он должен быть кортеж, а не список, и должен иметь такую ​​же длину, как nargs. Проверьте metavar в документах argparse.

+0

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

+0

Что такое ваши «nargs». Я предположил 5 из желаемого дисплея. – hpaulj

+0

У меня три, и я использую кортеж размером три. Строкой является parser.add_argument ('ipmi', nargs = 3, metavar = ('user', 'host', 'pwd')). Это может быть что-то конкретное о функциях обертки, которые я использую, и поэтому совершенно не связано с этой проблемой. Спасибо, что указали на метавар! – msun