我在我的程序中使用了 python optparse 模块,但我无法找到一种简单的方法来解析包含值列表的选项。
例如:
--groups one,two,three.
我希望能够以列表格式访问这些值,如options.groups[]
. 是否有 optparse 选项将逗号分隔值转换为列表?还是我必须手动执行此操作?
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)
查看选项回调。您的回调函数可以使用基本的方法将值解析为列表optarg.split(',')
同样,为了存档的完整性,扩展上面的示例:
代码(有微小的变化)将是:
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 --group 1 --group 2 --group 3
['一二三']