我正在我的程序中使用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(',')
再次,只是为了存档完整性,扩展上面的示例:
您仍然可以使用"dest"指定选项名称以供以后访问
在这种情况下不能使用默认值(请参阅optparse中默认值的触发回调中的说明)
如果您想验证输入,则应从foo_callback抛出OptionValueError
代码(微小的变化)将是:
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,要获取列表值,您可以使用操作' append ':
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 - 组一 - 组二 - 组三
['一二三']