import getopt optlist, args = getopt.getopt(args, shortopts, longopts=[])
args
- список аргументов,shortopts
- строка букв с опциями, которые передаются в скриптlongopts=[]
- имена длинных опций.Функция getopt()
модуля getopt
анализирует параметры командной строки и список параметров.
Аргумент args
- это список аргументов для анализа без начальной ссылки на запущенную программу. Обычно это sys.argv[1:]
.
Аргумент shorttopts
- это строка букв опций, которую необходимо распознать скрипту/программе. Если для опции требуются указать аргумент (значение), то за этой опцией необходимо ставить двоеточие ':'
, т. е. тот же формат, что и в функции Unix getopt()
.
Примечание. В отличие от GNU getopt()
, после аргумента, не являющегося параметром, все последующие аргументы также НЕ считаются параметрами. Это похоже на то, как работают системы Unix.
Аргумент longopts
, если он указан, то должен быть списком строк с именами длинных опций, которые должны поддерживаться. Начальные символы '--'
не должны быть включены в название параметра.
Длинные параметры, требующие аргумента, должны сопровождаться знаком равенства '='
. Необязательные аргументы - не поддерживаются. Чтобы принимать только длинные варианты, shortopts
шортопты должны быть пустой строкой. Длинные параметры в командной строке можно распознать, если они предоставляют префикс имени параметра, который точно соответствует одному из принятых параметров. Например, если longopts=['foo', 'frob'], опция --fo
будет соответствовать как --foo
, но --f
не будет соответствовать однозначно, поэтому будет вызвано исключение GetoptError
.
Возвращаемое значение функция getopt.getopt()
состоит из двух элементов, это:
(option, value)
; args
.Каждая возвращенная пара (option, value)
содержит
option
- параметр с префиксом дефиса для коротких параметров (например, '-x'
) или двумя дефисами для длинных параметров (например, '--long-option'
);value
- значение опции или пустую строку, если у опции нет значения. Параметры появляются в списке в том же порядке, в котором они были переданы в командную строку, что позволяет использовать несколько вариантов. Длинные и короткие варианты могут быть смешаны.
getopt.getopt()
:Пример использования параметров в стиле Unix:
>>> import getopt >>> args = '-a -b -cfoo -d bar a1 a2'.split() >>> args # ['-a', '-b', '-cfoo', '-d', 'bar', 'a1', 'a2'] >>> optlist, args = getopt.getopt(args, 'abc:d:') >>> optlist # [('-a', ''), ('-b', ''), ('-c', 'foo'), ('-d', 'bar')] >>> args # ['a1', 'a2']
Использование длинных имен опций:
>>> import getopt >>> s = '--condition=foo --testing --output-file abc.def -x a1 a2' >>> args = s.split() >>> args # ['--condition=foo', '--testing', '--output-file', # 'abc.def', '-x', 'a1', 'a2'] >>> optlist, args = getopt.getopt(args, 'x', [ 'condition=', 'output-file=', 'testing']) >>> optlist # [('--condition', 'foo'), ('--testing', ''), # ('--output-file', 'abc.def'), ('-x', '')] >>> args # ['a1', 'a2']