在Python中使用optparse
有没有办法让我在Python中配置optparse,让它不需要开头的-?也就是说,我希望可以这样写:
%program -d optionvalue
而不是这样:
%program d optionvalue
现在,当我尝试这样做的时候:
parser.add_option('d', '--database')
我遇到了以下错误:
optparse.OptionError: invalid option string 'd': must be at least two characters long
如果有人能帮忙就太好了!谢谢!
3 个回答
0
你可以通过使用回调动作来强制执行:
http://docs.python.org/library/optparse.html#callback-example-6-variable-arguments
这样你就可以直接访问左边和右边的参数了。
1
parse_args()
这个函数让你可以自己提供参数列表,而不仅仅是使用默认的 sys.argv[1:]
。这意味着你可以先处理一下命令行的参数,然后再把它们传给 optargs。假设你希望所有单字符的参数都算作选项键:
orig_args = sys.argv[1:]
new_args = []
for arg in orig_args:
if len(arg) == 1:
arg = '-' + arg
new_args.append(arg)
(options, args) = parser.parse_args(new_args)
(你也可以通过继承 OptionParser
来实现这个功能)
6
简单来说,答案是否定的。
参数是用来提供额外信息的,目的是帮助或定制程序的执行方式。选项的写法有很多种;传统的Unix写法是用一个短横线(“-”)后面跟一个字母,比如 -x 或 -F。此外,传统的Unix写法还允许把多个选项合并成一个参数,比如 -x -F 和 -xF 是一样的。GNU项目引入了另一种写法,就是两个短横线(--)后面跟一系列用短横线分开的单词,比如 --file 或 --dry-run。这就是optparse支持的两种选项写法。
http://docs.python.org/library/optparse.html#terminology
你需要自己来解析这些内容。