4

我想知道是否有一种简单的方法来解析 Python 中具有可选参数的命令行选项。例如,我希望能够以两种方式调用脚本:

> script.py --foo
> script.py --foo=bar

从 Python getopt 文档看来,我必须选择其中一个。

4

5 回答 5

3

另外,请注意标准库还有optparse,一个更强大的选项解析器。

于 2009-09-22T19:12:52.763 回答
3

查看 argparse: http ://code.google.com/p/argparse/

尤其是“nargs”选项

于 2009-09-22T19:13:41.387 回答
3

optparse来自 stdlib 的模块不支持开箱即用(也不应该因为以这种方式使用命令行选项是一种不好的做法)。

正如@Kevin Horn 指出的那样,您可以使用argparse模块(可通过安装easy_install argparse或抓取argparse.py并将其放在您的任何位置sys.path)。

例子

#!/usr/bin/env python
from argparse import ArgumentParser

if __name__ == "__main__":
    parser = ArgumentParser(prog='script.py')
    parser.add_argument('--foo', nargs='?', metavar='bar', default='baz')

    parser.print_usage()    
    for args in ([], ['--foo'], ['--foo', 'bar']):
        print "$ %s %s -> foo=%s" % (
            parser.prog, ' '.join(args).ljust(9), parser.parse_args(args).foo)

输出

用法:script.py [-h] [--foo [bar]]
$ script.py -> foo=baz
$ script.py --foo -> foo=None
$ script.py --foo bar -> foo=bar
于 2009-09-22T20:28:59.983 回答
2

optparse 中没有允许您执行此操作的选项。但是你可以扩展它来做到这一点:

http://docs.python.org/library/optparse.html#adding-new-actions

于 2009-09-22T19:15:23.637 回答
1

使用optparse包。

于 2009-09-22T19:13:32.450 回答