我是靠谱客的博主 沉默台灯,最近开发中收集的这篇文章主要介绍python中options类_Python OptionParser允许选择类型选项的多个参数,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

我在OptionParser中有一个选项,如下所示:foo_choices = ['foo', 'bar', 'mac', 'win']

parser.add_option('-t', '--test',

type='choice',

action='store',

dest='test',

choices=foo_choices,

default='foo')

但是,我希望该选项能够接受多个选项(可以用逗号分隔,也可以允许>1个参数)。只需设置nargs=2就可以传递多个参数,所以我假设对于类型选择可以这样做。我不知道如何对数量可变的纳格做这件事。在

语法如下:

^{pr2}$

或者./demo.py -t foo -o out.out

./demo.py -t foo bar -o out.out

我尝试过使用回调函数在逗号上拆分,但是如果回调返回一个数组,它就会出错,因为选项是无效的选项'foo,bar'。这个错误是有道理的,但我不知道该怎么办。在def foo_callback(option, opt, value, parser):

setattr(parser.values, option.dest, value.split(','))#!/usr/bin/python

from optparse import OptionParser

def main():

parser = OptionParser()

foo_choices = ['foo', 'bar', 'mac', 'win']

parser.add_option('-t', '--test',

type='choice',

action='callback',

dest='test',

choices=foo_choices,

callback=vararg_callback)

(options, args) = parser.parse_args()

print options

print args

def vararg_callback(option, opt_str, value, parser):

assert value is None

value = []

def floatable(str):

try:

float(str)

return True

except ValueError:

return False

for arg in parser.rargs:

# stop on --foo like options

if arg[:2] == "--" and len(arg) > 2:

break

# stop on -a, but not on -3 or -3.0

if arg[:1] == "-" and len(arg) > 1 and not floatable(arg):

break

value.append(arg)

del parser.rargs[:len(value)]

setattr(parser.values, option.dest, value)

if __name__ == '__main__':

main()

这个片段介绍了一种实现可变数量的narg的方法。然而,我唯一的方法就是从我的选项中删除类型和选项(这违背了我要做的事情的目的)。如果我没有,我会得到的错误是:[vagrant@machine a]$ ./demo.py -t foo

Traceback (most recent call last):

File "./demo.py", line 43, in

main()

File "./demo.py", line 14, in main

(options, args) = parser.parse_args()

File "/usr/lib64/python2.6/optparse.py", line 1394, in parse_args

stop = self._process_args(largs, rargs, values)

File "/usr/lib64/python2.6/optparse.py", line 1438, in _process_args

self._process_short_opts(rargs, values)

File "/usr/lib64/python2.6/optparse.py", line 1545, in _process_short_opts

option.process(opt, value, values, self)

File "/usr/lib64/python2.6/optparse.py", line 788, in process

self.action, self.dest, opt, value, values, parser)

File "/usr/lib64/python2.6/optparse.py", line 808, in take_action

self.callback(self, opt, value, parser, *args, **kwargs)

File "./demo.py", line 20, in vararg_callback

assert value is None

AssertionError

最后

以上就是沉默台灯为你收集整理的python中options类_Python OptionParser允许选择类型选项的多个参数的全部内容,希望文章能够帮你解决python中options类_Python OptionParser允许选择类型选项的多个参数所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(46)

评论列表共有 0 条评论

立即
投稿
返回
顶部