与 Perl 的Getopt::Long
您可以轻松定义采用可变数量参数的命令行选项:
foo.pl --files a.txt --verbose
foo.pl --files a.txt b.txt c.txt --verbose
有没有办法直接用Python来做到这一点optparse
模块?据我所知,nargs
option 属性可用于指定固定数量的选项参数,我在文档中没有看到其他替代方案。
这花了我一些时间才弄清楚,但您可以使用选项的回调操作来完成此操作。在此示例中,查看我如何将任意数量的参数获取到“--file”标志。
from optparse import OptionParser,
def cb(option, opt_str, value, parser):
args=[]
for arg in parser.rargs:
if arg[0] != "-":
args.append(arg)
else:
del parser.rargs[:len(args)]
break
if getattr(parser.values, option.dest):
args.extend(getattr(parser.values, option.dest))
setattr(parser.values, option.dest, args)
parser=OptionParser()
parser.add_option("-q", "--quiet",
action="store_false", dest="verbose",
help="be vewwy quiet (I'm hunting wabbits)")
parser.add_option("-f", "--filename",
action="callback", callback=cb, dest="file")
(options, args) = parser.parse_args()
print options.file
print args
唯一的副作用是您将参数放在列表而不是元组中。但这很容易解决,对于我的特定用例来说,需要一个列表。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)