如何在Java中调用Python代码

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在Java中调用Python代码相关的知识,希望对你有一定的参考价值。

Jython(原JPython),是一个用Java语言写的Python解释器。在没有第三方模块的情况下,通常选择利用Jython来调用Python代码,它是一个开源的JAR包,你可以到官网下载一个HelloPython程序importorg.python.util.PythonInterpreter;publicclassHelloPythonpublicstaticvoidmain(String[]args)PythonInterpreterinterpreter=newPythonInterpreter();interpreter.exec("print(\'hello\')");什么是PythonInterpreter?它的中文意思即是“Python解释器”。我们知道Python程序都是通过解释器来执行的,我们在Java中创建一个“解释器”对象,模拟Python解释器的行为,通过exec("Python语句")直接在JVM中执行Python代码,上面代码的输出结果为:hello在Jvm中执行Python脚本interpreter.execfile("D:/labs/mytest/hello.py");如上,将exec改为execfile就可以了。需要注意的是,这个.py文件不能含有第三方模块,因为这个“Python脚本”最终还是在JVM环境下执行的,如果有第三方模块将会报错:javaImportError:Nomodulenamedxxx仅在Java中调用Python编写的函数先完成一个hello.py代码:defhello():return\'Hello\'在Java代码中调用这个函数:importorg.python.core.PyFunction;importorg.python.core.PyObject;importorg.python.util.PythonInterpreter;publicclassHelloPythonpublicstaticvoidmain(String[]args)PythonInterpreterinterpreter=newPythonInterpreter();interpreter.execfile("D:/labs/hello.py");PyFunctionpyFunction=interpreter.get("hello",PyFunction.class);//第一个参数为期望获得的函数(变量)的名字,第二个参数为期望返回的对象类型PyObjectpyObject=pyFunction.__call__();//调用函数System.out.println(pyObject);上面的代码执行结果为:Hello即便只是调用一个函数,也必须先加载这个.py文件,之后再通过Jython包中所定义的类获取、调用这个函数。如果函数需要参数,在Java中必须先将参数转化为对应的“Python类型”,例如:__call__(newPyInteger(a),newPyInteger(b))a,b的类型为Java中的int型,还有诸如:PyString(Stringstring)、PyList(Iteratoriter)等。详细可以参考官方的api文档。包含第三方模块的情况:一个手写识别程序这是我和舍友合作写的一个小程序,完整代码在这里:,界面上引用了corejava上的一段代码。Python代码是舍友写的,因为在Python程序中使用了第三方的NumPy模块,导致无法通过Jython执行。下面这个方法纯粹是个人思路,没有深入查资料。核心代码如下:importjava.io.*;classPyCallerprivatestaticfinalStringDATA_SWAP="temp.txt";privatestaticfinalStringPY_URL=System.getProperty("user.dir")+"\\\\test.py";publicstaticvoidwriteImagePath(Stringpath)PrintWriterpw=null;trypw=newPrintWriter(newFileWriter(newFile(DATA_SWAP)));catch(IOExceptione)e.printStackTrace();pw.print(path);pw.close();publicstaticStringreadAnswer()BufferedReaderbr;Stringanswer=null;trybr=newBufferedReader(newFileReader(newFile(DATA_SWAP)));answer=br.readLine();catch(FileNotFoundExceptione)e.printStackTrace();catch(IOExceptione)e.printStackTrace();returnanswer;publicstaticvoidexecPy()Processproc=null;tryproc=Runtime.getRuntime().exec("python"+PY_URL);proc.waitFor();catch(IOExceptione)e.printStackTrace();catch(InterruptedExceptione)e.printStackTrace();//测试码publicstaticvoidmain(String[]args)throwsIOException,InterruptedExceptionwriteImagePath("D:\\\\labs\\\\mytest\\\\test.jpg");execPy();System.out.println(readAnswer());实际上就是通过Java执行一个命令行指令。

参考技术A http://www.cnblogs.com/xkxf/p/6918399.html

java调用python方法及常用的java调用python代码

 

Python语言作为一种流行的高级编程语言,在 Java开发中也是经常被使用到的。那么在 Java中如何调用 Python呢? 1、首先我们要知道, Java是一门面向对象的语言,所以我们可以通过方法和属性来调用 Python。 2、方法: (1)如果我们想调用 Python的方法,可以使用"="来连接。 例如,我们可以使用"='-'"-'-'"+'"='+'"来连接属性。 (3)如果想直接使用类的方法,那么我们就需要在方法中先定义类,然后在类中定义方法。例如: 3、注意:如果是 Java开发人员,可以直接调用 Python的类,或者通过调用 Java的属性来调用 Python的方法。但是需要注意的是:不能直接调用类或属性。

  • 1.使用 JavaScript的对象方法

    使用 JavaScript的对象方法时,我们可以通过定义一个构造函数来调用 Python的对象方法。 我们可以使用以下代码来调用 Python的对象方法: 这段代码中,我们需要先定义一个构造函数,然后使用构造函数来调用 Python的对象方法。具体代码如下: 这里,我们需要使用一个名为" document"的类,然后在类中定义一个构造函数。 在这个构造函数中,我们首先定义了一个名为" document"的类,然后定义了一个名为" document. map"的类对象。下面,我们来看一下 java中如何调用 python的对象方法:

  • 2.使用 Python的类

    1)如果想要调用 Python的类,可以在方法中使用 python. class。 2)如果想直接使用类的方法,那么可以直接在方法中使用 Python的类。 3)使用 Python的类调用 Python的方法时,必须首先定义一个类,然后在该类中定义方法。 4)在 Python中,类是可以被继承的,而且可以通过继承来扩展它。如果想要扩展某个类,则需要先声明这个类,然后在该对象中定义新的方法。 5)当要调用一个类或属性时,应该先创建对象。创建对象后才能使用它,因为对象是可以被继承和扩展的。 6)如果想要访问 Python中的变量和数据类型,可以使用 Python中的“类型检查”功能来检测是否有 Python类型。

  • 3.使用 python中的字符串

    对于 Python中的字符串,我们可以使用 Python的内置函数来直接调用。 例如: (1)首先我们需要在 Python的代码中使用一个函数来读取一个字符串,然后将其存储到一个数组中。这个函数的代码如下: (2)当我们调用该函数时,必须首先使用 Python的内置函数。例如: (3)当我们使用 Python内置函数时,如果想直接使用字符串,那么需要在代码中使用一个"="来连接字符串,例如: (4)如果想调用其他的函数,可以直接在 Python中使用内置的方法。例如: (5)对于其他语言,我们可以通过调用第三方库中的方法来调用 Python。例如: (6)对于 Python本身,我们也可以通过调用第三方库来实现。例如:

  • 4.使用 PyCode库

    (1) PyCode库是一种函数库,可以在 Python和 Java中使用。 (2)使用 PyCode库时,首先需要找到 Python的 pip模块,然后在 Java中安装 pip模块。 (3)在 Python中可以使用以下命令来调用 Python: pip install pip install pip install-a. pip-r PyCode-a. pip-p-b-g-o-m-k-p-l-m-f-t-s-f-n pyCode-a. pyCode-b. pyCode-c. py-f. py

  • 5.使用 TypeScript库

    该库提供了丰富的 Python功能,可以使我们轻松地使用 Python完成各种任务。TypeScript库提供了很多功能,如: 例如: 例如: 例如: 例如: 例如: 例如:

  • 6.使用PyGraphics2019库

    Python有很多库,其中最常用的是PyGraphics2019库。PyGraphics2019库提供了许多功能,比如可以实现 Python中的列表排序、对字符串进行排序、查找所有已知字符串等功能。其中最重要的是使用了 PyText库,因为 PyText可以直接访问 Python文档。 下面来看一下pyGraphics2019库的基本功能: (1)在 Java中实现列表排序 (2)列表排序时需要知道哪些元素为已知元素,以及每个元素在列表中的位置。例如:列表排序时,需要知道:"1"、"7"、......,在列表排序时,需要知道:1-5,5-7,8-9,10-11,......。 (3)可以将列表的数字按照从小到大的顺序排列。例如:从1到2是1,从2到3是2等等。

常用的java调用python代码

1. 使用ProcessBuilder类调用Python脚本

```
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class CallPythonScript 
public static void main(String[] args) 
try 
ProcessBuilder pb = new ProcessBuilder("python", "script.py");
Process p = pb.start();
BufferedReader in = new BufferedReader(new InputStreamReader(p.getInputStream()));
String line;
while ((line = in.readLine()) != null) 
System.out.println(line);

in.close();
 catch (IOException e) 
e.printStackTrace();



```

2. 使用Runtime类调用Python脚本

```
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class CallPythonScript 
public static void main(String[] args) 
try 
Runtime rt = Runtime.getRuntime();
Process pr = rt.exec("python script.py");
BufferedReader in = new BufferedReader(new InputStreamReader(pr.getInputStream()));
String line;
while ((line = in.readLine()) != null) 
System.out.println(line);

in.close();
 catch (IOException e) 
e.printStackTrace();



```

3. 使用Jython库调用Python脚本

```
import org.python.core.PyFunction;
import org.python.core.PyObject;
import org.python.core.PyString;
import org.python.util.PythonInterpreter;

public class CallPythonScript 
public static void main(String[] args) 
PythonInterpreter interpreter = new PythonInterpreter();
interpreter.execfile("script.py");
PyFunction func = (PyFunction) interpreter.get("function_name", PyFunction.class);
PyObject result = func.__call__(new PyString("argument"));
System.out.println(result);


```

以上是关于如何在Java中调用Python代码的主要内容,如果未能解决你的问题,请参考以下文章

Python代写,Python作业代写,代写Python,代做Python

在python程序中调用java代码

java调用python方法及常用的java调用python代码

python怎样调用Java中类

python 图像归一化作业代码代编程代写图python作业

java调用python代码