专业的JAVA编程教程与资源

网站首页 > java教程 正文

从Java运行Python程序的三种方法(java怎么调用python程序)

temp10 2024-09-22 10:08:56 java教程 8 ℃ 0 评论

在这里,我介绍了运行Java程序的三个不同的选项; 首先使用(旧)运行时类,然后使用ProcessBuilder类,然后在Java中嵌入Python代码,使用Jython(Python解释器,用Java编写!)

运行时方法

从Java运行Python程序的三种方法(java怎么调用python程序)

首先,让一些旧的方式来做,运行时类。

  1. import java.io. *;

  2. class test1 {

  3. public static void main(String a []){

  4. 尝试{

  5. String prg =“import sys \ nprint int(sys.argv [1])+ int(sys.argv [2])\ n”;

  6. BufferedWriter out = new BufferedWriter(new FileWriter(“test1.py”));

  7. out.write(PRG);

  8. out.close();

  9. int number1 = 10;

  10. int number2 = 32;

  11. 进程p = Runtime.getRuntime()。exec(“python test1.py”+ number1 +“”+ number2);

  12. BufferedReader in = new BufferedReader(new InputStreamReader(p.getInputStream()));

  13. int ret = new Integer(in.readLine())。intValue();

  14. System.out.println(“value is:”+ ret);

  15. } catch(Exception e){}

  16. }

  17. }

我们首先制作一个Java String prg,它包含我们的Python程序,这个字符串保存在文件“test1.py”上。接下来,我们在系统上运行Python解释器,并在Runtime类中使用exec方法。我们读取从Runtime类返回的输出流的输出,并将其转换为Java int。

我将上述源代码保存为“test2.java”。我输入以下内容;

javac test2.java

要执行它:

java test2

进程方法

我认为运行时类方法有点旧。在最新的Java版本中,使用的是ProcessBuilder类。这给参数提供了更多的结构。

  1. import java.io. *;

  2. class test2 {

  3. public static void main(String a []){

  4. 尝试{

  5. String prg =“import sys \ nprint int(sys.argv [1])+ int(sys.argv [2])\ n”;

  6. BufferedWriter out = new BufferedWriter(new FileWriter(“test1.py”));

  7. out.write(PRG);

  8. out.close();

  9. int number1 = 10;

  10. int number2 = 32;

  11. ProcessBuilder pb = new ProcessBuilder(“python”,“test1.py”,“”+ number1“,”+ number2);

  12. 进程p = pb.start();

  13. BufferedReader in = new BufferedReader(new InputStreamReader(p.getInputStream()));

  14. int ret = new Integer(in.readLine())。intValue();

  15. System.out.println(“value is:”+ ret);

  16. } catch(Exception e){System.out.println(e);}

  17. }

  18. }

我将上述保存为“test2.java”。然后我键入以下内容;

javac test2.java

要执行它:

java test2

Jython方法

Java应该是独立于平台的,并且调用本机应用程序(如python)不是非常平台独立的。

有一个用Java编写的Python(Jython)版本,它允许我们在我们的Java程序中嵌入Python。通常情况下,当您要使用外部库时,一个障碍就是编译并正确运行,因此我们将通过Jython来构建和运行一个简单的Java程序。

我们首先掌握jython jar文件:

http ://www.jython.org/downloads.html

(当我写这篇文章时,最新版本是:Jython 2.5.3)

我将jython-2.5.3.jar复制到我的Java程序将要的目录。然后我键入以下程序,它与前两个相同; 取两个数字,将它们发送到python,然后添加它们,然后python将其返回到我们的Java程序,其中的数字输出到屏幕上:

  1. import org.python.util.PythonInterpreter;

  2. import org.python.core。*;

  3. class test3 {

  4. public static void main(String a []){

  5. PythonInterpreter python = new PythonInterpreter();

  6. int number1 = 10;

  7. int number2 = 32;

  8. python.set(“number1”,新的PyInteger(number1));

  9. python.set(“number2”,new PyInteger(number2));

  10. python.exec(“number3 = number1 + number2”);

  11. PyObject number3 = python.get(“number3”);

  12. System.out.println(“val:”+ number3.toString());

  13. }

  14. }

我把这个文件称为“test3.java”,保存它,并执行以下操作来编译它:

javac -classpath jython-2.5.3.jar test3.java

下一步是尝试运行它,我以下列方式:

java -classpath jython-2.5.3.jar :. test3

现在,这允许我们以独立于平台的方式使用Java中的Python。这是一种缓慢的事实,感觉就像三种方法中最慢的一样。不过,它很酷,它是一个用Java编写的Python解释器...

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表