我在我的程序中使用了python optparse模块,而我找不到一种简单的方法来解析包含值列表的选项。
例如:
--groups one,two,three.
我希望能够以列表格式options.groups[]
访问这些值。是否有optparse选项将逗号分隔值转换为列表?或者我必须手动执行此操作吗?
答案 0 :(得分:83)
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)
答案 1 :(得分:39)
看看option callbacks。您的回调函数可以使用基本optarg.split(',')
答案 2 :(得分:11)
同样,仅仅为了存档完整性,扩展上面的例子:
代码(稍有改动)将是:
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)
答案 3 :(得分:8)
使用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 one --group two --group three
[' one',' two',' three']