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
['一二三']