【发布时间】:2008-12-24 18:54:52
【问题描述】:
我在我的程序中使用了 python optparse 模块,但我无法找到一种简单的方法来解析包含值列表的选项。
例如:
--groups one,two,three.
我希望能够以options.groups[] 的列表格式访问这些值。是否有 optparse 选项将逗号分隔值转换为列表?还是我必须手动执行此操作?
【问题讨论】:
我在我的程序中使用了 python optparse 模块,但我无法找到一种简单的方法来解析包含值列表的选项。
例如:
--groups one,two,three.
我希望能够以options.groups[] 的列表格式访问这些值。是否有 optparse 选项将逗号分隔值转换为列表?还是我必须手动执行此操作?
【问题讨论】:
再次,为了存档的完整性,扩展上面的例子:
代码(稍作改动)将是:
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 --group 1 --group 2 --group 3
['一','二','三']
【讨论】:
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)
【讨论】:
看看option callbacks。您的回调函数可以使用基本的optarg.split(',') 将值解析为列表
【讨论】: