【发布时间】:2013-11-30 21:59:02
【问题描述】:
(标题应为OptionParser: show extra help,但标题中不允许出现help字样)
我有这个OptionParser:
parser = OptionParser(
usage='usage: %s [options]' % (args[0]),
version='%s Version %s' % (args[0], version))
parser.add_option('-a', '--action', choices=['menu'] , help='Allowed actions are: menu, and any menu action', default='menu')
parser.add_option('-1', '--file1', type='string', help='First file')
parser.add_option('-2', '--file2', type='string', help='Second file')
parser.add_option('--debug', action='store_true', help='run in debug mode')
用--help 打电话给我:
Usage: /home/gonvaled/projects/bin/process_json.py [options]
Options:
--version show program's version number and exit
-h, --help show this help message and exit
-a ACTION, --action=ACTION
Allowed actions are: menu, and any menu action
-1 FILE1, --file1=FILE1
First file
-2 FILE2, --file2=FILE2
Second file
--debug run in debug mode
这很好,但是缺少操作。问题是某些动作是在Menu 对象(我的实现)中定义的,只能通过执行来显示:
menu.showCommands()
也就是说,这些操作不是为OptionParser 定义的,但仍然可以通过命令行访问,因为除menu 之外的任何操作都将透明地传递给要处理的Menu 对象。因此,OptionParser 提供的帮助不知道这些操作。
如何告诉OptionParser 对象在显示帮助文本时,必须添加一些外部信息?在最后添加就足够了。我查看了docs,但似乎没有这样的选项。
编辑
实际运行我的程序表明,不仅缺少帮助。更糟糕的是:optparse 抱怨未知行为:
gonvaled@pegasus ~ » process_json.py -a prettyfy-from-obj
Usage: /home/gonvaled/projects/bin/process_json.py [options]
process_json.py: error: option -a: invalid choice: 'prettyfy-from-obj' (choose from 'menu')
我如何告诉optparse 接受action 的未指定值?
【问题讨论】:
标签: python command-line-arguments optparse