Я не уверен, для чего используется параметр 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.
Причины, по которым даются здесь.