python可执行文件中的kwargs
我试图创建一个可以从命令行调用的程序,并在Python2.6中使用关键字参数。到目前为止,我已经尝试:python可执行文件中的kwargs,python,executable,keyword-argument,Python,Executable,Keyword Argument,我试图创建一个可以从命令行调用的程序,并在Python2.6中使用关键字参数。到目前为止,我已经尝试: #!/usr/bin/python def read(foo = 5): print foo return 0 if __name__ == '__main__' read() 当我尝试从命令行运行此命令时:/test.py程序按预期打印5。有没有办法使用/test.py foo=6?我想保留关键字参数 这似乎是一个简单的问题,但我还没有找到一个好的源代码。pytho
#!/usr/bin/python
def read(foo = 5):
print foo
return 0
if __name__ == '__main__'
read()
当我尝试从命令行运行此命令时:/test.py
程序按预期打印5。有没有办法使用/test.py foo=6
?我想保留关键字参数
这似乎是一个简单的问题,但我还没有找到一个好的源代码。python内置了一个库来帮助您实现向脚本传递命令行参数 . 这个用法和你在问题中描述的有点不同 在基本级别上,您可以通过访问所有命令行参数,这将是一个参数列表 抱歉,我应该提到python 2.6库被称为类似这样的东西
if __name__ == '__main__':
kwargs = dict(x.split('=', 1) for x in sys.argv[1:])
read(**kwargs)
这就是说,对于习惯命令行的人来说,argparse和optparse可能会为您提供更健壮、更自然的功能。(更不用说,支持字符串以外类型的参数。)
哦,如果你真正想要的只是交互式地使用你的函数,那就使用交互式解释器;
python
或ipython
。您需要将代码放入一个以.py
结尾的文件中并导入它,然后您可以调用它。一个不太常见但非常有趣的替代方法是:一个库,它从您为程序编写的帮助消息中生成参数解析器().请查看仅用于此目的的模块。感谢您的快速评论。不幸的是,我使用的是python2.6,因此,argparse
不可用,我还没有弄清楚如何使用带有关键字参数的sys.argv
,但我仍在使用它。@greatscott:python2.6中有getopt
,这在您的情况下应该可以。@dm:Edited以反映python版本。谢谢你的帮助。明天我会查看getopt
和optpass
,谢谢。实际上,我写这篇文章是为了一位同事,他想在命令行之外运行所有东西,而不是通过python
或ipython
工作。不过我很感谢你的帮助。我将签出optpass
。