使用Perl,Getopt::Long您可以轻松定义带有可变数量参数的命令行选项:
foo.pl --files a.txt --verbose
foo.pl --files a.txt b.txt c.txt --verbose
Run Code Online (Sandbox Code Playgroud)
有没有办法直接使用Python的optparse模块?据我所知,nargsoption属性可用于指定固定数量的选项参数,我还没有在文档中看到其他替代方法.
Dav*_*wks 21
这需要我花一点时间来弄清楚,但你可以使用回调操作来完成这个任务.在这个例子中,检查我如何抓取任意数量的args到"--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
Run Code Online (Sandbox Code Playgroud)
唯一的副作用是你将args放在列表而不是元组中.但这可以很容易地修复,对于我的特定用例,列表是可取的.
我相信optparse不支持你的要求(不是直接的 - 你注意到,如果你愿意做回调的所有额外工作,你可以做到!).您也可以使用第三方扩展argparse进行最简单的操作,它支持可变数量的参数(并且还添加了几个其他方便的功能).
这个URL文件argparse的add_argument传递nargs='*'允许该选项接受零个或多个参数,'+'让它接受一个或多个参数等.
| 归档时间: |
|
| 查看次数: |
9634 次 |
| 最近记录: |