在Python中使用optparse

2 投票
3 回答
2162 浏览
提问于 2025-04-16 18:00

有没有办法让我在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

你需要自己来解析这些内容。

撰写回答