Python中带有可选参数的命令行选项

时间:2009-09-22 18:53:11

标签: python getopt

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

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

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

5 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:3)

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

尤其是'nargs'选项

答案 2 :(得分:3)

来自stdlib的

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

作为@Kevin Horn pointed out,您可以使用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)

输出

usage: script.py [-h] [--foo [bar]]
$ script.py           -> foo=baz
$ script.py --foo     -> foo=None
$ script.py --foo bar -> foo=bar

答案 3 :(得分:2)

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

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

答案 4 :(得分:1)

使用optparse包。