2016-07-17 6 views
1

Argparse отображает сообщение о списке выбора, как в этом примере:Отключить выбор argparse сообщение

import argparse 
parser = argparse.ArgumentParser() 
parser.add_argument('--styles', choices=long_list_of_styles) 

Как я передаю длинный список, помощь сообщение не выглядит хорошо, на самом деле это выглядит запутанным и он затеняет другие аргументы своим присутствием из-за того, что все эти варианты печатаются.

Есть ли способ сообщить Argparser не печатать варианты аргументов?

+1

Об этом уже спрашивали. Вы должны использовать специальный форматировщик справки, как показано в связанном вопросе. – Bakuriu

+0

Спасибо, я не получил никаких результатов в Google. Однако оба решения в связанном ответе слишком сложны. Я просто удалю выборы. – vedar

+0

Мое предложение: не используйте 'выборы' и вручную проверяйте, является ли выбранная опция выбором. Предоставьте вариант, например '--help-styles', который напечатает список имен доступных стилей, чтобы пользователи могли получить доступ к списку поддерживаемых вариантов. – Bakuriu

ответ

2

Предлагаемый дубликат, Python's argparse choices constrained printing представляет относительно сложное решение - обычай HelpFormatter. Или обычай type.

Чем выше вопрос голосование/ответы является Python argparse: Lots of choices results in ugly help output

Вы найдете больше с [argparse] choices поиска.

Простейшим решением является установка параметра metavar. None отображает ничего в слоте choices, но вы, вероятно, хотите короткое слово

In [8]: styles=['one','two','three','four'] 
In [10]: parser = argparse.ArgumentParser() 
In [11]: parser.add_argument('--styles', metavar='STYLE', choices=styles, 
    ...: help='list of choices: {%(choices)s}') 
Out[11]: _StoreAction(option_strings=['--styles'], dest='styles', nargs=None, const=None, default=None, type=None, choices=['one', 'two', 'three', 'four'], help='list of choices: {%(choices)s}', metavar='STYLE') 

In [12]: parser.print_help() 
usage: ipython3 [-h] [--styles STYLE] 

optional arguments: 
    -h, --help  show this help message and exit 
    --styles STYLE list of choices: {one, two, three, four} 

Я включил %(choices)s в помощь, чтобы перечислить их там. Конечно, вы могли бы разместить свое собственное резюме. Длинный список подходит лучше, чем в usage.

+0

Учитывая, что вы нашли этот ответ в другом дубликате, вы должны были повторно открыть вопрос * и закрыть его как дубликат другого * вместо повторного дублирования этого снова ... – Bakuriu

+0

'metavar' - это решение, которое я хотел, благодаря – vedar

 Смежные вопросы

  • Нет связанных вопросов^_^