Python 官方文档:入门教程 => 点击学习
Scala项目中调用python的几种方法 首先在工程目录某个地方建立了一个Python文件 test.py import sys def addNum(a, b): return a + b if __name__
首先在工程目录某个地方建立了一个Python文件
test.py
import sys
def addNum(a, b):
return a + b
if __name__ == '__main__':
a = 3
b = 7
# if args input
if len(sys.argv) == 3:
a = int(sys.argv[1])
b = int(sys.argv[2])
x = addNum(a, b)
print x
with open("src/test.txt", 'w') as f:
f.write("the result: " + str(x))
在scala里面启动一个本地进程,执行python程序
// method1: launch local runtime process to exec python file
// just exec file
val proc1 = Runtime.getRuntime().exec("python src/test.py")
proc1.waitFor()
// exec with parameters
val proc2 = Runtime.getRuntime().exec("python src/test.py 8 9")
proc2.waitFor()
其中:
Jpython(Http://www.jython.org/)是一个java的扩展包,在scala里面可以直接调用
首先将Jpyhon standaone的jar文件导入到scala工程并引用
import org.python.core.{PyFunction, PyInteger, PyObject}
import org.python.util.PythonInterpreter
// method2: use Jpython module
val interpreter = new PythonInterpreter()
// exec python code
interpreter.exec("print 'hello jpython'")
// exec python file in JVM
val py_file = new FileInputStream("src/test.py")
interpreter.execfile(py_file)
py_file.close()
// call python funtion and return result (oops: work in java but not in scala ~)
// val a = 15
// val b = 17
// val func = interpreter.get("addNum", PyFunction.class).asInstanceOf[PyFunction]
// val pyobj = func.__call__(new PyInteger(a), new PyInteger(b))
// println(pyobj.toString())
其中:
--结束END--
本文标题: scala调用python
本文链接: https://lsjlt.com/news/188258.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
2024-03-01
2024-03-01
2024-03-01
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0