Python optparse metavar - PullRequest
       10

Python optparse metavar

25 голосов
/ 03 декабря 2008

Я не уверен, для чего используется параметр optparse metavar. Я вижу, что он используется повсюду, но я не вижу его использования.

Может кто-нибудь объяснить мне? Спасибо.

Ответы [ 5 ]

28 голосов
/ 03 декабря 2008

Как говорит @Guillaume, он используется для получения справки. Если вы хотите иметь параметр, который принимает аргумент, такой как имя файла, вы можете добавить параметр metavar к вызову add_option, чтобы предпочитаемое имя аргумента / дескриптор выводилось в сообщении помощи. С текущая документация модуля :

usage = "usage: %prog [options] arg1 arg2"
parser = OptionParser(usage=usage)
parser.add_option("-f", "--filename",
                  metavar="FILE", help="write output to FILE"),

выдаст такую ​​помощь:

usage: <yourscript> [options] arg1 arg2

options:
  -f FILE, --filename=FILE

"FILE" после "-f" и "--filename" происходит из метавара.

5 голосов
/ 03 декабря 2008

metavar, кажется, используется для генерации справки: http://www.python.org/doc/2.5.2/lib/optparse-generating-help.html

0 голосов
/ 13 ноября 2014

Теперь предпочтительнее использовать библиотеку argparse вместо optparse.

Причины, почему приведены здесь .

0 голосов
/ 10 июля 2012

Есть еще одно значимое использование метавара, когда кто-то хочет использовать 'dest' в качестве поискового тега аргумента, но маскирует сообщение помощи метаваром. (Например, иногда удобно при использовании подпарсеров). (Как указано в комментарии S.Lott ).

parser.add_argument(
        'my_fancy_tag',
        help='Specify destination',
        metavar='helpful_message'
        )

или равно

parser.add_argument(
        dest='my_fancy_tag',
        help='Specify destination',
        metavar='helpful_message'
        )

Справка покажет метавар:

./parse.py -h usage: parser [-h] destination

positional arguments:   
  helpful_message  Specify destination

но dest будет хранить тег fancy_tag в пространстве имен:

./parse.py test 
Namespace(my_fancy_tag='test')
0 голосов
/ 07 октября 2010

metavar - переменная, используемая для печати на экране после опции. Обычно для ввода предложений после опции используются FILE или INT или STRING для пользователя. Без metavar, optparse напечатает значение dest после добавления опции.

...