java里面嵌套执行python脚本

方法一:通过RunTime.getRuntime().exec(shellScript)

    //方式1 不带参数
       String classpath = Thread.currentThread().getContextClassLoader().getResource("").getPath();
        String shellScript = null;
        if (System.getProperties().getProperty("os.name").toLowerCase().indexOf("windows") != -1){
            shellScript = String.format("python template.py", classpath.substring(1));
        }else {
            shellScript = String.format("python3 template.py", classpath.substring(1),classpath);
        }
        Runtime rt = Runtime.getRuntime();
        

      

    //方式2 带参数

        String command = "D:\\calculator_simple.py"; 
        String num1 = "1"; 
        String num2 = "2"; 
        String[] cmdArr = new String[] {exe, command, num1, num2}; 
        Process process = Runtime.getRuntime().exec(cmdArr); 
        InputStream is = process.getInputStream(); 
        DataInputStream dis = new DataInputStream(is); 
        String str = dis.readLine(); 
        process.waitFor(); 
        System.out.println(str); //此处输出3

        #calculator_simple.py脚本
        # coding=utf-8
        from sys import argv
        num1 = argv[1]
        num2 = argv[2]
        sum = int(num1) + int(num2)
        print sum        

方法2:通过Jython调用,这种方式不太推荐,记得调用selenium的库会报No module found,可是明明引用了,而且java社区不太喜欢这种强耦合的方式调用Python,所以官网也不怎么更新了,在微服务架构大行其道的今天,这种程序间嵌套调用的方式将会逐渐被淘汰

    String python = "D:\\simple_python.py";
    PythonInterpreter interp = new PythonInterpreter();
    interp.execfile(python);

 

 

//方式1 不带参数
String command = "D:\\calculator_simple.py"; 
String num1 = "1";
String num2 = "2";
String[] cmdArr = new String[] {exe, command, num1, num2};
Process process = Runtime.getRuntime().exec(cmdArr);
InputStream is = process.getInputStream();
DataInputStream dis = new DataInputStream(is);
String str = dis.readLine();
process.waitFor();
System.out.println(str);
posted @ 2021-01-27 23:37  feibazhf  阅读(444)  评论(0编辑  收藏  举报