Python Optparse列表

我在我的程序中使用了python optparse模块,我无法find一个简单的方法来parsing包含值列表的选项。

例如:

--groups one,two,three. 

我希望能够以列表格式访问这些值作为options.groups[] 。 是否有一个optparse选项将逗号分隔值转换为列表? 或者我必须手动执行此操作?

看看选项callback 。 您的callback函数可以使用基本的optarg.split(',')将值parsing为列表

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) 

同样,为了存档的完整性,扩展上面的例子:

  • 您仍然可以使用“dest”来指定选项名称以供以后访问
  • 在这种情况下,默认值不能使用(请参阅optparse中默认值的触发callback中的说明)
  • 如果你想validationinput,应该从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 – 组1 – 组2 – 组3

['一二三']