当前位置: 首页 > article >正文

【Java】使用Java调用Python的四种方法

在现代开发中,结合不同编程语言的优势往往能达到事半功倍的效果。Java作为一种强类型、面向对象的编程语言,在性能和可维护性上具有独特优势;而Python则以其简洁的语法和丰富的库生态而闻名。在某些项目中,我们可能需要在Java代码中调用Python脚本或函数,以利用Python的特性来处理特定任务。本文将详细介绍四种在Java中调用Python的方法,并推荐一种最常用且实用的方法。

一、在Java类中直接执行Python语句

通过Jython库,可以直接在Java类中执行Python语句。Jython是Python的Java实现,允许将Python代码无缝嵌入Java程序中。使用Jython,可以在Java代码中编写Python语句,甚至调用Python模块和函数。

步骤:

  1. 下载
  2. 使用Jython的PythonInterpreter

示例代码:

import org.python.util.PythonInterpreter;

public class JythonExample {
    
   
public static void main(String[] args) {
        
        PythonInterpreter interpreter

        PythonInterpreter

        Python
PythonInterpreter interpreter = new PythonInterpreter();
        interpreter.exec(
        interpreter.exec

        interpreter

       
"print('Hello from Python')");
    }
}

    }
}
``

    }
}

    }

   

注意事项:

  • Jython仅支持Python 2.7,若需支持Python 3.x,则需要考虑其他方法。

二、在Java中直接调用Python脚本

另一种直接调用Python脚本的方法是使用Java的ProcessBuilder类。这种方法允许我们在Java程序中执行外部Python脚本,并获取其输出结果。

步骤:

  1. 确保系统上已安装Python解释器。
  2. 使用ProcessBuilder

示例代码:

import java.io.BufferedReader;
import java.io.InputStreamReader;

public class ProcessBuilderExample {
    
   
public static void main(String[] args) {
        try {
            
            ProcessBuilder pb

            ProcessBuilder

            Process

           
ProcessBuilder pb = new ProcessBuilder("python", "script.py");
            
            Process process

            Process

           
Process process = pb.start();

            

            BufferedReader in


            BufferedReader


           


BufferedReader in = new BufferedReader(new InputStreamReader(process.getInputStream()));
            String line;
            
            String line;
           

            String line;

            String line

            String

           
while ((line = in.readLine()) != null) {
                System.out.println(line);
            }
        } 
                System.out.println(line);
            }
        }

                System.out.println(line);
            }
       

                System.out.println(line);
           

                System.out.println(line);

                System.out.println(line

                System.out.println

                System

               
catch (Exception e) {
            e.printStackTrace();
        }
    }
}

            e.printStackTrace();
        }
    }

            e.printStackTrace();
        }
   

            e.printStackT

            e.printStac

            e.printS

            e.pri

           

        

     

注意事项:

  • Python

三、★★★使用Runtime.getRuntime()执行Python脚本文件(推荐使用)

在Java中调用Python脚本的常用方法是通过Runtime.getRuntime()方法执行外部进程。相较于ProcessBuilderRuntime方法更为简洁,适合在简单场景中使用。

步骤:

  1. 使用Runtime.getRuntime()方法执行Python脚本文件。
  2. 通过getInputStream()获取Python脚本的输出结果。

示例代码:

import java.io.BufferedReader;
import java.io.InputStreamReader;

public class RuntimeExample {
    
   
public static void main(String[] args) {
        
       
try {
            
            Process process

            Process

           
Process process = Runtime.getRuntime().exec("python script.py");
            BufferedReader in = new BufferedReader(new InputStreamReader(process.getInputStream()));
            String line;
            while ((line = in.readLine()) != null) {
                System.out.println(line);
            }
        } 
                System.out.println(line);
            }
        }

                System.out.println(line);
            }
       

                System.out.println(line);
            }

                System.out.println(line);
           

                System.out.println(line);

                System.out.println(line

                System.out.println

                System.out

                System
catch (Exception e) {
            e.printStackTrace();
        }
    }
}

推荐理由:

  • Runtime.getRuntime()方法简单易用,适合在需要快速执行Python脚本的场景中使用。

四、调用Python脚本中的函数

在某些复杂场景中,可能需要在Java中调用Python脚本中的特定函数。这可以通过执行Python脚本的方式实现,同时传递参数或使用交互方式获取函数执行结果。

步骤:

  1. 使用ProcessBuilderRuntime.getRuntime()执行Python脚本。
  2. 在Python脚本中定义函数,并在Java代码中传递参数。
  3. 获取函数执行的返回结果,并在Java代码中处理。

示例代码:

import java.io.BufferedReader;
import java.io.InputStreamReader;

public class CallPythonFunctionExample {
    public static void main(String[] args) {
        try {
            String[] command = {"python", "script.py", "arg1", "arg2"};
            Process process = Runtime.getRuntime().exec(command);
            BufferedReader in = new BufferedReader(new InputStreamReader(process.getInputStream()));
            String line;
            while ((line = in.readLine()) != null) {
                System.out.println(line);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

注意事项:

  • 确保Python脚本正确处理传递的参数,并输出可供Java程序读取的结果。

总结

在Java中调用Python代码有多种实现方法,从直接执行Python语句到运行完整的Python脚本,每种方法都有其适用场景。根据实际项目需求,选择合适的方案将有助于提高开发效率。其中,推荐使用Runtime.getRuntime()方法,因为它更为简洁且易于实现。


http://www.kler.cn/a/287720.html

相关文章:

  • 搭建es环境
  • web——upload-labs——第三关——后缀黑名单绕过
  • mysql中mvcc如何处理纯读事务的?
  • 【Chapter 3】Machine Learning Classification Case_Prediction of diabetes-XGBoost
  • 渑池县中药材产业党委莅临河南广宇企业管理集团有限公司参观交流
  • MySQL Online DDL
  • js编写缓慢回到顶部
  • 代码随想录八股训练营第二十五天| C++
  • OpenCV绘图函数(4)绘制轮廓线的函数drawContours()的使用
  • 【C语言】十六进制、二进制、字节、位、指针、数组
  • Spring理论知识(Ⅳ)——Spring Instrumentation模块
  • 深度学习(四)-卷积神经网络
  • Git 系列文章导航
  • 【Next.js 入门指南】5分钟创建你的第一个 Next.js 应用
  • 深度学习-OpenCV运用(3)
  • 大数据技术之Flume 企业开发案例——自定义 Source(9)
  • 恢复丢失的数据:iPhone 恢复指南
  • C语言学习笔记 Day15(文件管理--下)
  • 《python语言程序设计》第8章第12题生物信息:找出基因,生物学家使用字母A C T和G构成字符2串建模一个基因组(上)
  • C++ 11相关新特性(using与typedef、尾置返回值类型)
  • ecmascript和javascript的区别
  • unity游戏开发——标记物体 一目了然
  • 深度学习-11-为什么AI需要GPU
  • filter过滤器和reduce求和以及
  • 9.1centos安装postgres
  • JVM GC 调优