Что означает метавар и действие в argparse в Python?
Я читаю через модуль argparse. Я застрял как то, что метавар и действие означает
>>> parser.add_argument('integers', metavar='N', type=int, nargs='+',
... help='an integer for the accumulator')
>>> parser.add_argument('--sum', dest='accumulate', action='store_const',
... const=sum, default=max,
... help='sum the integers (default: find the max)')
Я мог пропустить, но из того, что я прочитал, я не смог найти определения для metavar
и action (action="store_const", etc)
. action (action="store_const", etc)
. что они на самом деле значат?
Ответы
Ответ 1
metavar используется в справочных сообщениях в месте ожидаемого аргумента. См. FOO
по умолчанию metavar
здесь:
>>> parser = argparse.ArgumentParser()
>>> parser.add_argument('--foo')
>>> parser.add_argument('bar')
>>> parser.parse_args('X --foo Y'.split())
Namespace(bar='X', foo='Y')
>>> parser.print_help()
usage: [-h] [--foo FOO] bar
...
action определяет, как обрабатывать аргументы командной строки: хранить его как константу, добавлять в список, хранить логическое значение и т.д. Есть несколько встроенных действий, плюс легко написать пользовательский.
Ответ 2
Metavar: Он предоставляет другое имя для необязательного аргумента в справочных сообщениях. Укажите значение аргумента ключевого слова metavar в add_argument().
например:
>>> parser = argparse.ArgumentParser()
>>> parser.add_argument('--foo', metavar='YYY')
>>> parser.add_argument('bar', metavar='XXX')
>>> parser.parse_args('X --foo Y'.split())
Namespace(bar='X', foo='Y')
>>> parser.print_help()
usage: [-h] [--foo YYY] XXX
positional arguments:
XXX
optional arguments:
-h, --help show this help message and exit
--foo YYY
Ссылка - http://www.usatlas.bnl.gov/~caballer/files/argparse/add_argument.html
Действие: Аргументы могут инициировать различные действия, указанные аргументом action для add_argument(). Существует шесть встроенных действий, которые могут срабатывать при возникновении аргумента:
(1) Сохранить. Сохраните значение после опционального преобразования его в другой тип. Это действие по умолчанию принято, если ни один не указан явно.
(2) store_true/store_false - сохранить соответствующее логическое значение.
(3) store_const - сохранить значение, определенное как часть спецификации аргумента, а не значение, которое исходит из анализируемых аргументов. Обычно это используется для реализации флагов командной строки, которые arent booleans.
(4) append - сохранить значение в списке. Несколько значений сохраняются, если аргумент повторяется.
(5) append_const - сохранить значение, определенное в спецификации аргумента, в список.
(6) version - печатает информацию о версии программы и затем выходит.
Ссылка - http://bioportal.weizmann.ac.il/course/python/PyMOTW/PyMOTW/docs/argparse/index.html
Ответ 3
То, что вы показали нам, - это только первый пример. Соответствующие разделы из документов Python:
http://docs.python.org/dev/library/argparse.html#action
http://docs.python.org/dev/library/argparse.html#metavar