3

我在我的 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
4

3 回答 3

2

这涉及猴子补丁,可能不是最好的解决方案。另一方面,它似乎有效。

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
于 2009-05-19T19:30:51.817 回答
1

使用metavar关键字参数:

parser.add_option("-c", "--callback", dest="vararg_attr", action="callback", callback=vararg_callback, metavar='LIST')

参考:http ://docs.python.org/library/optparse.html

于 2009-05-19T16:17:24.000 回答
0

如果类型为无(默认),则 optparse 不显示附加参数的指示。如果您指定类型和元变量,它会显示在帮助中:

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
于 2015-08-26T07:43:25.780 回答