python可执行文件中的kwargs

时间:2012-10-24 17:19:07

标签: python executable kwargs

我正在尝试创建一个可以从命令行调用并在python 2.6中使用关键字参数的程序。到目前为止,我已经尝试过:

#!/usr/bin/python
def read(foo = 5):
    print foo
    return 0
if __name__ == '__main__'
    read()

当我尝试从命令行运行它时:./test.py程序按预期打印5。有没有办法使用./test.py foo=6?我想保留关键字参数。

这似乎是一个简单的问题,但我没有找到一个好的来源。

3 个答案:

答案 0 :(得分:6)

python内置了库,可以帮助您实现向脚本传递命令行参数 argparse。使用情况与您在问题中描述的情况略有不同......

在基本级别,您可以通过sys.argv访问所有命令行参数,这将是一个参数列表

很抱歉应该提到python 2.6库名为optparse

答案 1 :(得分:3)

这样的东西?

if __name__ == '__main__':
    kwargs = dict(x.split('=', 1) for x in sys.argv[1:])
    read(**kwargs)

也就是说,argparse和optparse可能会为那些习惯于命令行的人提供更强大,更自然的东西。 (更不用说,支持字符串以外的类型的参数。)

哦,如果你真正 之后只是交互式使用你的功能,那就使用交互式解释器; pythonipython。您需要将代码放入以.py结尾的文件并导入它,然后您就可以调用它。

答案 2 :(得分:1)

一个不太常见但非常有趣的替代方法是docopt:一个库,它根据您为程序编写的帮助消息(on github)生成一个参数解析器。