1

我需要为我的脚本创建一个“接口”,以便(由 crontab 运行):

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

例如(类似于以下内容)

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

python feedAnimals.py --pets dog,cat,fish

无论如何要这样做type="choices"吗?或者我可以使用type="string"吗?我试图\n在“帮助”选项下的选项之间插入,但这些似乎在运行时被忽略了。

必须兼容 python 2.4 :(

4

3 回答 3

1

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

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

于 2014-06-19T17:04:07.290 回答
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
于 2014-06-19T21:08:47.153 回答
1

看看这个相关的问题,第一个有一个很好的“type='choice'”例子,第二个有多个值:

给定选项时为 optionparser 设置默认选项

使用 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
于 2016-11-16T19:40:38.033 回答