https://docs.python.org/2/library/optparse.html#standard-option-types
"choice"
опция подтип опции "строка". Атрибут опции выбора (последовательность строк) определяет набор допустимых аргументов параметра. optparse.check_choice()
сравнивает предоставленные пользователем аргументы аргументов в отношении этого основного списка и выдает OptionValueError
, если указана недопустимая строка.
например:
parser.add_option('-r', '--risk', dest='risk', default='high',
type='choice', choices=('high', 'medium', 'low', 'all'),
help="the risk of site, choice are 'high', 'middle', 'low', 'all'")
Если вы хотите, чтобы иметь возможность передать несколько значений --risk
, вы должны использовать action="append"
:
опциона action
определяет, что optparse делает, когда он сталкивается с этим в командной строке. Стандартные действия опции жестко закодированные в optparse являются:
...
"append"
[отношение: type
, dest
, nargs
, choices
]
Опция должна сопровождаться аргументом, который добавляется к списку в dest
. Если не задано значение по умолчанию для dest
, пустой список автоматически создается, когда optparse сначала встречает эту опцию в командной строке. Если nargs
> 1, используются несколько аргументов, а кортеж длиной nargs
добавляется к dest
.
Также остерегайтесь объединения action="append"
с default=['high']
, потому что вы в конечном итоге в всегда иметь «высокий» в вашем options.risk
.
parser.add_option('-r', '--risk', dest='risk', default=[], nargs=1,
type='choice', choices=('high', 'medium', 'low'), action='append',
help="the risk of site, choice are 'high', 'middle', 'low'")
Использование:
>>> options, args = parser.parse_args(['-r','high','-r','medium'])
>>> options.risk
['high', 'medium']