我已经在我的python代码中实现了一个类似于以下内容的可变参数的回调:https://docs.python.org/library/optparse.html#callback-example-6-variable-arguments
添加这样的选项:
parser.add_option("-c", "--callback", dest="vararg_attr", action="callback", callback=vararg_callback)
问题是,没有向用户指示该选项需要额外的输入:
Options:
-h, --help show this help message and exit
-c, --callback
有什么方法可以改变optparse的用法,以便用法显示类似:
-c=LIST, --callback=LIST
这涉及猴子补丁,可能不是最佳解决方案。另一方面,它似乎起作用。
from optparse import OptionParser, Option
# Complete hack.
Option.ALWAYS_TYPED_ACTIONS += ('callback',)
def dostuff(*a):
pass
parser = OptionParser()
parser.add_option("-c",
"--callback",
dest="filename",
action="callback",
callback=dostuff,
metavar='LIST',
help='do stuff',
)
(options, args) = parser.parse_args()
输出:
Usage: opt.py [options]
Options:
-h, --help show this help message and exit
-c LIST, --callback=LIST
do stuff
用户metavar
关键字参数:
parser.add_option("-c", "--callback", dest="vararg_attr", action="callback", callback=vararg_callback, metavar='LIST')
optparse如果类型为None(默认),则不显示其他参数的指示。如果指定类型和metavar,它将显示在帮助中:
parser.add_option("-c", "--callback",
dest="vararg_attr",
type="string",
metavar="LIST",
action="callback",
callback=vararg_callback,
help="do stuff")
输出:
Options:
-h, --help show this help message and exit
-c LIST, --callback=LIST
do stuff