Python Optparse列表

时间:2008-12-24 18:54:53

标签: python optparse

我在我的程序中使用了python optparse模块,而我找不到一种简单的方法来解析包含值列表的选项。

例如:

--groups one,two,three. 

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

4 个答案:

答案 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)

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

  • 您仍然可以使用“dest”指定选项名称以供日后访问
  • 在这种情况下不能使用默认值(请参阅Triggering callback on default value in 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)

答案 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']