Optparse python 3 документация на русском

Русские Блоги

Python имеет два встроенных модуля для обработки параметров командной строки:

Один из них — getopt, который также упоминается в книге «Глубоко в Python», который может просто обрабатывать параметры командной строки;

Другой — optparse, который является мощным и простым в использовании, и может легко генерировать стандартные Unix / Posix-совместимые инструкции командной строки.

пример

Вот простой пример использования optparse:

from optparse import OptionParser [. ] parser = OptionParser() parser.add_option("-f", "--file", dest="filename", help="write report to FILE", metavar="FILE") parser.add_option("-q", "--quiet", action="store_false", dest="verbose", default=True, help="don't print status messages to stdout") (options, args) = parser.parse_args() 

Теперь вы можете ввести в командной строке:

 --file=outfile -q -f outfile --quiet --quiet --file outfile -q -foutfile -qfoutfile 

Вышеупомянутые команды имеют такой же эффект. Кроме того, optparse автоматически генерирует для нас справочную информацию из командной строки:

usage: [options] options: -h, --help show this help message and exit -f FILE, --file=FILE write report to FILE -q, --quiet don't print status messages to stdout 

Простой процесс

Сначала вы должны импортировать класс OptionParser и создать объект OptionParser:

from optparse import OptionParser [. ] parser = OptionParser() 

Затем используйте add_option для определения параметров командной строки:

parser.add_option(opt_str, . attr=value, . ) 

Каждый параметр командной строки состоит из строки имени параметра и атрибута параметра. Такие как -fИли–fileЭто длинные и короткие имена параметров:

Наконец, как только вы определили все параметры командной строки, вызовите parse_args () для анализа командной строки программы:

(options, args) = parser.parse_args() 

Заметка:Вы также можете передать список аргументов командной строки в parse_args (); в противном случае по умолчанию используется sys.argv [: 1].

Два значения, возвращаемые parse_args ():

  • options, это объект (optpars.Values), который содержит значения параметров командной строки. Если вам известно имя параметра командной строки, например file, вы можете получить доступ к его соответствующему значению: options.file.
  • args, который представляет собой список позиционных аргументов.
Читайте также:  Python requests request payload

Actions

action — один из параметров метода parse_args (), который указывает optparse, что делать, когда он анализирует аргумент командной строки. действия имеют набор фиксированных значений на выбор, по умолчанию ’store‘Означает сохранение значения параметра командной строки в объекте параметров.

  1. parser.add_option(«-f», «—file»,
  2. action=»store», type=»string», dest=»filename»)
  3. args = [«-f», «foo.txt»]
  4. (options, args) = parser.parse_args(args)
  5. print options.filename

Наконец, будет распечатан «foo.txt».

Когда optparse анализирует «-f», он продолжит анализ следующего «foo.txt», а затем сохранит «foo.txt» в options.filename. Когда вызывается parser.args (), значение options.filename равно «foo.txt».

Вы также можете указать параметр типа в методе add_option () для других значений, таких как int или float и т. Д .:

parser.add_option("-n", type="int", dest="num") 

По умолчанию тип — «строка». Как показано выше, длинные имена параметров также необязательны. Фактически, параметр dest также необязателен. Если параметр dest не указан, имя параметра командной строки будет использоваться для доступа к значению объекта параметров.

У магазина также есть две другие формы:store_true с участием store_falseОн используется для обработки случая, когда после параметра командной строки нет значения. Параметры командной строки, такие как -v, -q:

parser.add_option("-v", action="store_true", dest="verbose") parser.add_option("-q", action="store_false", dest="verbose") 

В этом случае при синтаксическом анализе с «-v» параметру options.verbose будет присвоено значение True, в противном случае при синтаксическом анализе с «-q» будет присвоено значение False.

К другим значениям действий относятся:

store_constappendcountcallback

По умолчанию

Метод parse_args () предоставляет параметр по умолчанию для установки значения по умолчанию. Такие как:

parser.add_option("-f","--file", action="store", dest="filename", default="foo.txt") parser.add_option("-v", action="store_true", dest="verbose", default=True) 

Или используйте set_defaults ():

parser.set_defaults(filename="foo.txt",verbose=True) parser.add_option(. ) (options, args) = parser.parse_args() 

Создать справку по программе

Еще одна удобная функция optparse — автоматическое создание справочной информации для программы. Вам нужно только указать текст справочного сообщения для параметра справки метода add_option ():

usage = "usage: %prog [options] arg1 arg2" parser = OptionParser(usage=usage) parser.add_option("-v", "--verbose", action="store_true", dest="verbose", default=True, help="make lots of noise [default]") parser.add_option("-q", "--quiet", action="store_false", dest="verbose", help="be vewwy quiet (I'm hunting wabbits)") parser.add_option("-f", "--filename", metavar="FILE", help="write output to FILE"), parser.add_option("-m", "--mode", default="intermediate", help="interaction mode: novice, intermediate, " "or expert [default: %default]") 

Когда optparse анализирует параметры командной строки -h или -help, он вызывает parser.print_help () для печати справочной информации программы:

usage: [options] arg1 arg2 options: -h, --help show this help message and exit -v, --verbose make lots of noise [default] -q, --quiet be vewwy quiet (I'm hunting wabbits) -f FILE, --filename=FILE write output to FILE -m MODE, --mode=MODE interaction mode: novice, intermediate, or expert [default: intermediate] 

нота:После вывода справочной информации optparse завершит работу без анализа других параметров командной строки.

Читайте также:  Processing programming language java

В приведенном выше примере шаг за шагом объясняется, как создавать справочную информацию:

    Информация об использовании программы, определяемая пользователем (сообщение об использовании): Код Python

usage = "usage: %prog [options] arg1 arg2" 
usage = "usage: %prog [options] arg1 arg2" 
  • Когда пользователь определяет справочную информацию для параметров командной строки, не нужно беспокоиться о проблемах, вызванных разрывами строк, optparse справится со всем этим.
  • Установка параметра metavar в методе add_option помогает напомнить пользователям об ожидаемых параметрах параметра командной строки, таких как metavar = «mode»: Код Python нота:Строка в параметре metavar автоматически станет прописной.

Используйте% default в справочной информации параметра help, чтобы вставить значение по умолчанию для параметра командной строки.

Если в программе много параметров командной строки, вы можете сгруппировать их, тогда вы можете использовать OptonGroup:

group = OptionGroup(parser, ``Dangerous Options'', ``Caution: use these options at your own risk. `` ``It is believed that some of them bite.'') group.add_option(``-g'', action=''store_true'', help=''Group option.'') parser.add_option_group(group) 

Ниже приводится справочное сообщение, которое будет напечатано:

usage: [options] arg1 arg2 options: -h, --help show this help message and exit -v, --verbose make lots of noise [default] -q, --quiet be vewwy quiet (I'm hunting wabbits) -fFILE, --file=FILE write output to FILE -mMODE, --mode=MODE interaction mode: one of 'novice', 'intermediate' [default], 'expert' Dangerous Options: Caution: use of these options is at your own risk. It is believed that some of them bite. -g Group option

Показать версию программы

Как и в сообщении об использовании, вы можете указать параметр версии при создании объекта OptionParser для отображения информации о версии текущей программы:

parser = OptionParser(usage="%prog [-f] [-q]", version="%prog 1.0") 

Таким образом, optparse автоматически интерпретирует параметр командной строки —version:

Читайте также:  Scripts downloads in php

Обработка исключения

Включая исключения программ и исключения пользователей. Основное обсуждение здесь — пользовательские исключения, которые являются исключениями, вызванными вводом пользователем недопустимых или неполных параметров командной строки. optparse может автоматически обнаруживать и обрабатывать некоторые пользовательские аномалии:

$ /usr/bin/foo -n 4x usage: foo [options] foo: error: option -n: invalid integer value: '4x' $ /usr/bin/foo -n usage: foo [options] foo: error: -n option requires an argument 

Пользователи также могут использовать метод parser.error () для настройки обработки некоторых исключений:

(options, args) = parser.parse_args() [. ] if options.a and options.b: parser.error("options -a and -b are mutually exclusive") 

В приведенном выше примере, когда параметры командной строки -b и -b существуют одновременно, он распечатает «параметры -a и -b являются взаимоисключающими», чтобы предупредить пользователя.

Если указанные выше методы обработки исключений не могут соответствовать требованиям, вам может потребоваться унаследовать класс OptionParser и перегрузить методы exit () и erro ().

Полный пример программы

from optparse import OptionParser [. ] def main(): usage = "usage: %prog [options] arg" parser = OptionParser(usage) parser.add_option("-f", "--file", dest="filename", help="read data from FILENAME") parser.add_option("-v", "--verbose", action="store_true", dest="verbose") parser.add_option("-q", "--quiet", action="store_false", dest="verbose") [. ] (options, args) = parser.parse_args() if len(args) != 1: parser.error("incorrect number of arguments") if options.verbose: print "reading %s. " % options.filename [. ] if __name__ == "__main__": main() 

Источник

Оцените статью