Ответ 1
Посмотрите обратные вызовы параметров. Функция обратного вызова может анализировать значение в списке, используя базовый optarg.split(',')
Я использую модуль ppton optparse в своей программе, и мне трудно найти простой способ разобрать опцию, содержащую список значений.
Например:
--groups one,two,three.
Я хотел бы иметь доступ к этим значениям в формате списка как options.groups[]
. Есть ли опция optparse для преобразования значений, разделенных запятыми, в список? Или мне нужно сделать это вручную?
Посмотрите обратные вызовы параметров. Функция обратного вызова может анализировать значение в списке, используя базовый optarg.split(',')
Ответ S.Lott уже принят, но вот пример кода для архивов:
def foo_callback(option, opt, value, parser):
setattr(parser.values, option.dest, value.split(','))
parser = OptionParser()
parser.add_option('-f', '--foo',
type='string',
action='callback',
callback=foo_callback)
Опять же, ради полноты архива, расширяя пример выше:
Код (с небольшими изменениями) будет следующим:
def get_comma_separated_args(option, opt, value, parser):
setattr(parser.values, option.dest, value.split(','))
parser = OptionParser()
parser.add_option('-f', '--foo',
type='string',
action='callback',
callback=get_comma_separated_args,
dest = foo_args_list)
С optparse, чтобы получить значение списка, вы можете использовать действие " добавить":
from optparse import OptionParser parser = OptionParser() parser.add_option("--group", action="append", dest="my_groups") (options, args) = parser.parse_args() print options.my_groups
Затем вызовите свою программу следующим образом:
$python demo.py --группа одна - группа вторая - группа три
['one', 'two', 'three']