将未找到的选项添加到参数中

-1 投票
1 回答
1188 浏览
提问于 2025-04-17 06:27

可能重复的问题:
我怎么才能让optparse的OptionParser忽略无效的参数?

我想用optparse来处理我的输入。请问我怎么才能让optparse忽略那些没有提供的选项,而是把它们直接加到args里呢?我的程序用户对电脑不太懂,我不想跟他们解释说在命令行上需要输入'--'才能传递某些参数。

1 个回答

1

只需要用 default= 来设置默认值,这样如果没有提供这个参数,就会使用默认值:

from optparse import OptionParser
[...]
parser = OptionParser()
parser.add_option("-f", "--file", dest="filename",
                  help="write report to FILE", metavar="FILE")
parser.add_option("-q", "--quiet",
                  action="store_false", dest="verbose", default=True,
                  help="don't print status messages to stdout")

(options, args) = parser.parse_args()

如果想为一个选项添加多个参数,可以使用 nargs=#

import optparse

if __name__ == '__main__':
    parser = optparse.OptionParser()
    parser.add_option("-a", "--add", nargs=2, dest="add")
    (options, args) = parser.parse_args()

    first_add = int(options.add[0])
    second_add = int(options.add[1])
    print "%d" % (first_add + second_add)

这样会得到:

[ 12:05 jon@hozbox ~/SO/python ]$ ./optparse-add-options-not-found-to-args.py --add 1 -2
-1
[ 12:07 jon@hozbox ~/SO/python ]$ ./optparse-add-options-not-found-to-args.py -a -50 -75
-125

http://docs.python.org/library/optparse.html

撰写回答