武汉PHP培训
达内武汉民大中心

15827352908

热门课程

武汉PHP培训丨从Java运行Python程序的三种方法

  • 时间:2018-01-31 17:44
  • 发布:武汉PHP培训
  • 来源:互联网

    在这里,我介绍了运行Java程序的三个不同的选项; 首先使用(旧)运行时类,然后使用ProcessBuilder类,然后在Java中嵌入Python代码,使用Jython(Python解释器,用Java编写!)
    运行时方法
    首先,让一些旧的方式来做,运行时类.
    import java.io. *;
    class test1 {
    public static void main(String a []){
    尝试{
    String prg ="import sys nprint int(sys.argv [1])+ int(sys.argv [2]) n";
    BufferedWriter out = new BufferedWriter(new FileWriter("test1.py"));
    out.write(PRG);
    out.close();
    int number1 = 10;
    int number2 = 32;
    进程p = Runtime.getRuntime().exec("python test1.py"+ number1 +""+ number2);
    BufferedReader in = new BufferedReader(new InputStreamReader(p.getInputStream()));
    int ret = new Integer(in.readLine()).intValue();
    System.out.println("value is:"+ ret);
    } catch(Exception e){}
    }
    }
    我们首先制作一个Java String prg,它包含我们的Python程序,这个字符串保存在文件"test1.py"上.接下来,我们在系统上运行Python解释器,并在Runtime类中使用exec方法.我们读取从Runtime类返回的输出流的输出,并将其转换为Java int.
    我将上述源代码保存为"test2.java".我输入以下内容;
    javac test2.java
    要执行它:
    java test2
    进程方法
    我认为运行时类方法有点旧.在最新的Java版本中,使用的是ProcessBuilder类.这给参数提供了更多的结构.
    import java.io. *;
    class test2 {
    public static void main(String a []){
    尝试{
    String prg ="import sys nprint int(sys.argv [1])+ int(sys.argv [2]) n";
    BufferedWriter out = new BufferedWriter(new FileWriter("test1.py"));
    out.write(PRG);
    out.close();
    int number1 = 10;
    int number2 = 32;
    ProcessBuilder pb = new ProcessBuilder("python","test1.py",""+ number1","+ number2);

    进程p = pb.start();

武汉PHP培训

    BufferedReader in = new BufferedReader(new InputStreamReader(p.getInputStream()));
    int ret = new Integer(in.readLine()).intValue();
    System.out.println("value is:"+ ret);
    } catch(Exception e){System.out.println(e);}
    }
    }
    我将上述保存为"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程序,其中的数字输出到屏幕上:
    import org.python.util.PythonInterpreter;
    import org.python.core.*;
    class test3 {
    public static void main(String a []){
    PythonInterpreter python = new PythonInterpreter();
    int number1 = 10;
    int number2 = 32;
    python.set("number1",新的PyInteger(number1));
    python.set("number2",new PyInteger(number2));
    python.exec("number3 = number1 + number2");
    PyObject number3 = python.get("number3");
    System.out.println("val:"+ number3.toString());
    }
    }
    我把这个文件称为"test3.java",保存它,并执行以下操作来编译它:
    javac -classpath jython-2.5.3.jar test3.java
    下一步是尝试运行它,我以下列方式:
    java -classpath jython-2.5.3.jar :. test3
    现在,这允许我们以独立于平台的方式使用Java中的Python.这是一种缓慢的事实,感觉就像三种方法中最慢的一样.不过,它很酷,它是一个用Java编写的Python解释器...

    本篇文章是由武汉PHP培训为您呈现,希望给您带来更多更好的文章,喜欢的朋友们可以添加微信公众号.

更多武汉PHP培训相关咨询,请扫描下方二维码

武汉PHP培训

马上预约七天免费试听课

姓名:

电话:

上一篇:武汉PHP培训丨java语言
下一篇:武汉PHP培训丨对JVM开发工具的调查

达内教育集团总裁韩少云:双师模式的实践与思考

达内与广西教育学院携手签约,共建专业开启校企合作新阶段!

Java工程师岗位面试总结,看完了才发现知识不够用!

PHP中的堆是如何工作?

选择城市和中心
贵州省

广西省

海南省

有位老师想和您聊一聊