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

4 投票
5 回答
21346 浏览
提问于 2025-04-15 14:31

我在想,有没有简单的方法可以在Python中解析命令行选项,特别是那些可选参数的选项。例如,我希望能够用两种方式来调用一个脚本:

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

从Python的getopt文档来看,似乎我必须在两者之间选择一种。

5 个回答

3

看看这个叫做 argparse 的工具:

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

特别是里面的 'nargs' 选项。

3

另外,值得注意的是,标准库里还有一个叫做 optparse 的东西,它是一个功能更强大的选项解析器。

3

标准库中的 optparse 模块不支持这个功能(而且它本来就不应该支持,因为以这种方式使用命令行选项是一种不好的做法)。

正如 @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)

输出

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

撰写回答