在optparse帮助输出中列出选项

时间:2014-04-03 14:05:26

标签: python

当您使用Python的optparse模块为选项生成帮助时,您可以使用%defualt占位符将该选项的默认值插入到帮助中。无论如何,当选择类型时,它是否为有效选择做同样的事情?

例如:

import optparse
parser=optparse.OptionParser()
parser.add_option("-m","--method",
                  type = "choice", choices = ("method1","method2","method3"),
                  help = "Method to use. Valid choices are %choices. Default: %default")

3 个答案:

答案 0 :(得分:3)

我认为您的问题是您不想重复选择列表。幸运的是变量是普遍的,如果有时难以解决这类问题。所以丑陋但务实的答案是:

import optparse

choices_m = ("method1","method2","method3")
default_m = "method_1"

parser=optparse.OptionParser()
parser.add_option("-m","--method",
                  type = "choice", choices = choices_m, 
                  default = defult_m,
                  help = "Method to use. Valid choices are %s. Default: %s"\
                         % (choices_m, default_m)

当然,使用argparse也可以做到这一点。

答案 1 :(得分:2)

正如@msvalkon所评论的那样,optparse已被弃用 - 请改用argparse

您可以在%(choices)s参数中指定help占位符:

import argparse


parser = argparse.ArgumentParser()
parser.add_argument("-m",
                    "--method",
                    type=str,
                    choices=("method1", "method2", "method3"),
                    help = "Method to use. Valid choices are %(choices)s. Default: %(default)s",
                    default="method1")

parser.parse_args()

这是控制台上的内容:

$ python test.py --help
usage: test.py [-h] [-m {method1,method2,method3}]

optional arguments:
  -h, --help            show this help message and exit
  -m {method1,method2,method3}, --method {method1,method2,method3}
                        Method to use. Valid choices are method1, method2,
                        method3. Default: method1

答案 2 :(得分:1)

argparse默认打印选项,如下面的演示中所示。自动打印默认值的一种方法是使用ArgumentsDefaultHelpFormatter

import argparse

parser = argparse.ArgumentParser(formatter_class=argparse.ArgumentDefaultsHelpFormatter)
parser.add_argument("-m","--method", type=str, choices=("method1","method2","method3"),
              default="method1", help = "Method to use.")

parser.parse_args()

DEMO:

msvalkon@Lunkwill:/tmp$ python test.py -h
usage: test.py [-h] [-m {method1,method2,method3}]

optional arguments:
  -h, --help            show this help message and exit
  -m {method1,method2,method3}, --method {method1,method2,method3}
                        Method to use. (default: method1)