当在Python中使用--help时,OptionParser()显示选项

时间:2014-06-19 16:54:33

标签: python optparse optionparser

我需要创建一个"界面"我的脚本(由crontab运行):

  1. 当--help时,终端将显示一个选项列表(格式正确,由\ n分隔)
  2. 允许多个选项输入(逗号分隔)
  3. e.g。 (如下所示)

    python feedAnimals.py --help 
    ...... Choices:
               dog
               cat
               fish
    
    python feedAnimals.py --pets dog,cat,fish
    

    无论如何都要使用type="choices"执行此操作? 或者我可以使用type="string"吗?我试图在" help"下的选项之间插入\n。选项,但这些似乎在运行时被忽略。

    必须兼容python 2.4 :(

3 个答案:

答案 0 :(得分:1)

尝试查看argparse的文档,应该做你需要的 - 并且默认内置帮助(-h, - help)

https://docs.python.org/2/library/argparse.html

答案 1 :(得分:1)

这是如何更改usage值的示例。试试吧:

from optparse import OptionParser 
string = "Choices:\n\tdog\n\tcat\n\tfish"
parser = OptionParser(usage=string)
(options,args) = parser.parse_args()

您还可以将string更改为此样式:

string = """
    Choices:
        dog
        cat
        fish
"""

然后测试一下:

$python code.py --help

In会告诉你这样的结果:

Usage: 
    Choices:
        dog
        cat
        fish


Options:
  -h, --help  show this help message and exit

答案 2 :(得分:1)

看一下这个相关的问题,第一个是好的"类型='选择'"例如,第二个有多个值:

Set a default choice for optionparser when the option is given

Processing multiple values for one single option using getopt/optparse?

你可以使用这样的东西或者手工处理参数":

from optparse import OptionParser

def get_args():
  usage = "Usage: %prog [options]"

  parser = OptionParser()

  parser.add_option("--pet",
    type = "choice",
    action = 'append',
    choices = ["dog", "cat", "fish"],
    default = [],
    dest = pets,
    help = "Available pets: [dog, cat, fish]"
  )

  (options, args) = parser.parse_args()

  print options, args
  return (options, args)

(opt, args) = get_args()
print opt.pets

然后,运行:

python test.py --pet cat --pet dog --pet fish