Python中使用OptionParser()显示--help时的选项
我需要为我的脚本创建一个“接口”,这个脚本是通过定时任务(crontab)来运行的:
- 当输入 --help 时,终端会显示一个选择列表(格式要好,选项之间用\n分开)
- 允许输入多个选择(用逗号分隔)
比如说(类似下面的内容)
python feedAnimals.py --help
...... Choices:
dog
cat
fish
python feedAnimals.py --pets dog,cat,fish
有没有办法用 type="choices"
来实现这个功能?或者我可以用 type="string"
吗?我尝试在“帮助”选项下的选择之间插入 \n
,但在运行时这些似乎被忽略了。
必须兼容Python 2.4 :(
3 个回答
1
看看这些相关的问题,第一个问题有一个很好的“type='choice'”示例,第二个问题则涉及多个值:
你可以使用类似这样的方式,或者手动处理这些参数:
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
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
它会给你显示类似这样的结果:
Usage:
Choices:
dog
cat
fish
Options:
-h, --help show this help message and exit
1
你可以看看argparse的文档,这个工具应该能满足你的需求。而且帮助功能(-h,--help)默认就有,非常方便。