5

我正在尝试创建一个可以从命令行调用并在 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?我想保留关键字参数。

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

4

3 回答 3

6

python 内置库来帮助您实现将命令行参数传递给脚本 argparse。用法与您在问题中描述的有所不同...

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

抱歉应该提到python 2.6库被称为optparse

于 2012-10-24T17:20:07.940 回答
3

像这样的东西?

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

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

哦,如果你真正想要的只是交互式地使用你的函数,那就使用交互式解释器;要么python要么ipython。您需要将代码放入以结尾的文件中.py并导入它,然后您就可以调用它。

于 2012-10-24T18:00:46.887 回答
1

一个不太常见但非常有趣的替代方案是docopt:一个从您为程序编写的帮助消息(在 github 上)生成参数解析器的库。

于 2012-10-24T18:53:07.513 回答