Я не уверен, для чего используется параметр optparse
metavar
. Я вижу, что он используется повсюду, но я не вижу его использования.
Кто-нибудь может мне это понять? Спасибо.
Я не уверен, для чего используется параметр optparse
metavar
. Я вижу, что он используется повсюду, но я не вижу его использования.
Кто-нибудь может мне это понять? Спасибо.
Как говорит @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
"ФАЙЛ" после "-f" и "--filename" происходит из метавара.
metavar, по-видимому, используется для генерации справки: http://www.python.org/doc/2.5.2/lib/optparse-generating-help.html
metavar
- это переменная, используемая для печати на экране после опции. Обычно используется для ввода предложений после опции FILE
или INT
или STRING
для пользователя. Без metavar
, optparse
будет печатать dest
значение после того, как вы добавили.
Существует еще одно содержательное использование метавара, в котором каждый хочет использовать "dest" в качестве тега lookup-tag, но маскирует сообщение справки метаваром. (Например, иногда полезно при использовании подпараметров). (Как указано в комментарии 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')
Теперь лучше использовать библиотеку argparse вместо optparse.
Причины, по которым даются здесь.