26

我不确定optparse'smetavar参数的用途。我看到它到处都在使用,但我看不到它的用途。

有人可以对我说清楚吗?谢谢。

4

5 回答 5

30

正如@Guillaume 所说,它用于生成帮助。如果您想要一个带有参数的选项,例如文件名,您可以将metavar参数添加到add_option调用中,以便在帮助消息中输出您的首选参数名称/描述符。从当前的模块文档

usage = "usage: %prog [options] arg1 arg2"
parser = OptionParser(usage=usage)
parser.add_option("-f", "--filename",
                  metavar="FILE", help="write output to FILE"),

会产生这样的帮助:

usage: <yourscript> [options] arg1 arg2

options:
  -f FILE, --filename=FILE

“-f”和“--filename”之后的“FILE”来自元变量。

于 2008-12-03T12:48:58.377 回答
5

metavar 似乎用于生成帮助:http ://www.python.org/doc/2.5.2/lib/optparse-generating-help.html

于 2008-12-03T12:42:52.977 回答
0

metavar是选项后用于在屏幕中打印的变量。通常用于选项是FILEINTSTRING给用户之后的建议输入。没有metavar,将在您添加选项后optparse打印值。dest

于 2010-10-07T13:43:56.233 回答
0

metavar 的另一种有意义的用途是使用 'dest' 作为参数查找标记,但使用 metavar 掩盖帮助消息。(例如,有时在使用子解析器时很方便)。(如S.Lott的评论所示)。

parser.add_argument(
        'my_fancy_tag',
        help='Specify destination',
        metavar='helpful_message'
        )

或同样

parser.add_argument(
        dest='my_fancy_tag',
        help='Specify destination',
        metavar='helpful_message'
        )

帮助将显示元变量:

./parse.py -h usage: parser [-h] destination

positional arguments:   
  helpful_message  Specify destination

但 dest 会将 fancy_tag 存储在命名空间中:

./parse.py test 
Namespace(my_fancy_tag='test')
于 2012-07-10T15:37:11.113 回答
0

现在最好使用argparse库而不是 optparse。

这里给出原因。

于 2014-11-13T09:55:29.247 回答