optparse это более удобный, гибкий и мощный модуль для парсинга опций командной строки, чем getopt. Он использует больше декларативных стилей парсинга. Вы лишь создаете экземпляр класса OptionParser, наполняете его опциями и получаете результат. Модуль позволяет определять опции в традиционном синтаксисе GNU/POSIX и дополнительно генерировать справочные сообщения.
optparse был явно разработан, чтобы поощрить создание программ с прямыми, стандартными интерфейсами командной строки. С этой целью модуль поддерживает только наиболее распространенный синтаксис командной строки и семантику, традиционно используемую под Unix.
В основном, работа с модулем сводится к созданию экземпляра класса OptionParser, наполнением его правилами работы с опциями, разбор командной строки и паередача основной программе полученный опций и аргументов. В общем случае ключевым моментом для написания кода является понимание возможных вариаций задания опций методом add_options().
Если задано значение
parser.add_option(
parser.add_option(
parser.parse_args()
parser.print_help()
File "./test.py", line 44, in <module>
parser.add_option('-s', '--skip',action='store_true', dest='skip', default=False, help='skip some situation in algoritm of prog')
File "/usr/lib/python2.7/optparse.py", line 1020, in add_option
self._check_conflict(option)
File "/usr/lib/python2.7/optparse.py", line 995, in _check_conflict
option)
optparse.OptionConflictError: option -s/--skip: conflicting option string(s): -s
Options:
-h, --help show this help message and exit
--silence silence mode, no any output
-s, --skip skip some situation in algoritm of prog
-f foo
--file=foo
--file foo
- action (По умолчанию: "store")
Определяет действие для заданной в командной строке опции. Подробно расписано ниже.
- type (По умолчанию: "string")
Преобразует значение опции в заданный тип. Подробно описано ниже.
- dest (По умолчанию получается из строки опции)
optparse сохранит значениее опции как атрибут с именем dest. Если значение не указано, то имя переменной будет образовано из строки опции. Например, если опция была задана как
"--input-file" , то по умолчанию имя переменной присвоется как input_file. Если длинная опция не была задана, то будет использована короткая, например, если была задана опция"-f" , то переменная примет имя f. - default (Считается устаревшим)
Значении опции по умолчанию, если она не была задана в командной строке. Считается устаревшей и рекомендуется использовать parser.set_defaults(). Однако это всего лишь рекомендация и ничего не мешает использовать ее в вашем коде.
- nargs (По умолчанию: 1)
Количество аргументов принимающее опцией. Если больше 1, то в dest сохранится кортеж значений.
- const
Используется совместно с действиями где сохраняются значения как константы.
- choices
Для опций с типом действия
"choice" , предопределенный список строк значения которых могут быть выбраны пользователем. - callback
Для опций с типом действия
"callback" , вызываемый объект. - callback_args, callback_kwargs
Дополнительный позиционные и именнованные аргументы передающиеся в вызываемый объект callback после 4 стандартных аргументов.
- help
Справочный текст который выводится если пользователь введет опцию
"--help" . Если текст не задан, то опция будет перечисленна без справочного текста. Что бы скрыть подобную опцию вовсе используйте специальное значение SUPPRESS_HELP - metavar (По умолчанию получается из строки опции)
Текст приписываемый при выводе справки к опциям который принимают аргументы. Смотри пример ниже для разъяснений.
- store [дополнительные: type, dest, nargs, choices]
За опцией должен следовать аргумент, который будет конвертирован в значение в соответствием с типом type и сохранен в dest. Если nargs больше 1, то в dest сохранится кортеж аргументов.
- store_const [обязательные: const; дополнительные: dest]
Если указана опция, то в dest сохранится значение const.
- store_true [дополнительные: dest]
Специальный случай store_const, когда в dest сохраняется значение True
- store_false [дополнительные: dest]
Подобно store_true, только сохраняется значение False
- append [дополнительные: type, dest, nargs, choices]
Следующий за опцией аргумент будет добавлен в список dest. Если не задано значение по умолчанию, то будет создан пустой список при первом упоминании опции в командной строке. Если nargs больше 1, то кортеж аргументов будет добавлен в dest.
- append_const [обязательные: const; дополнительные: dest]
Подобно store_const, но значение const добавляется в список dest.
- count [дополнительные: dest]
Увеличить целочисленное значение находящееся в dest. Если не задано значение по умолчанию, то сперва dest приравнивается нулю.
- callback [обязательные: callback; дополнительные: types, nargs, callback_args, callback_kwargs]
Вызвать функцию указанную в callback следующим образом:func(option, opt_str, value, parser, *args, **kwargs)
- help
Вывести окончательно скомпанованное справочное сообщение. Данная опция автоматически включается в парсер, поэтому ее не нужно указывать явно.
- version
Выводит информацию о версии и выходит из программы. Версия формируется и выводится на экран методом print_version(). Если в конструктор парсера была передана строка с версией программы, то данная опци автоматически будет добавлена в парсер.
args
options
import optparse, os
VERSION=
def print_hello(*args):
for i in args:
print i
parser=optparse.OptionParser(version=
parser.add_option(
parser.add_option(
parser.add_option(
parser.add_option(
parser.add_option(
parser.add_option(
parser.add_option(
parser.add_option(
parser.add_option(
parser.add_option(
parser.add_option(
parser.add_option(
options,arguments=parser.parse_args()
for key,value in options.__dict__.items():
print key,
for i,item in enumerate(arguments):
exclude_columns = [0, 1, 3]
user_priorety = 2
help_string = None
hidden_option = True
output_level = 50
coefficients = ('10', '0', '99')
file = data.txt
nothing = None
buffer_size = 512
standart_work = None
silence = None
argument #0 = Hello
argument #1 = world
argument #2 = !
john_16@linux-home:~/workspace/tmp/src> python optparse_test.py --help
Usage: optparse_test.py [options]
Some test program to show what is optparse module of Python
Options:
--version show program's version number and exitjohn_16@linux-home:~/workspace/tmp/src> python optparse_test.py --version
-h, --help show this help message and exit
-f FILE, --file=FILE Input file for additional data
-b BUFFER_SIZE, --buffer-size=BUFFER_SIZE
Set buffer size for IO operations
-c X Y Z, --coefficients=X Y Z User defined coefficients of start -o Set output information level to above standart, for
see additional information about work of program
-O Set output information level to maximum
-s, --silence No print anything in stdout and stderr
-p, --panic Abort from program if any working and error occured
-e EXCLUDE_COLUMNS, --exclude=EXCLUDE_COLUMNS
Exclude for execution column from input file
-n, --nothing Nothing to do option
-P, --priority Increase priority of execution program on 1 point
--hello
0.1
arguments
ОтветитьУдалитьСписок аргументов командной строки, расположенных позиционно левее опций.
Вот тут надо что-то вроде:
Позиционные аргументы оставшиеся после всех обработанных
К элементам options можно обращаться options.
ОтветитьУдалитьПример:
parser = optparse.OptionParser(conflict_handler="error")
parser.add_option("-n", "--name", action="store", type="string", dest="name")
options, arguments = parser.parse_args()
print(options.name)