java 调用python并传参

本文介绍了如何在Java中通过Runtime.exec()方法执行Python脚本,并展示了如何将fromPath, toPath, picPath和fileName作为参数传递给Python。重点讲解了Python从命令行参数获取的方式,并提供了一个实际示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    public String executePython(String fromPath, String toPath, String picPath, String fileName) {
     
        String success = "500";
        String exe = "python";
        //要执行python文件的位置
        String command = "D:\\pythonProject\\python.py";
        //fromPath, toPath, picPath, fileName -->传递给python的参数
        String[] cmdArr = new String[]{exe, command, fromPath, toPath, picPath, fileName};
        Process process = null;
        try {
            process = Runtime.getRuntime().exec(cmdArr);
            InputStream is = process.getInputStream();
            DataInputStream dis = new DataInputStream(is);
            //视频处理完成 返回1
            String result = dis.readLine();
            log.info("python返回结果:" + result);
            process.waitFor();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return success;
    }

python中获取参数

fromPath = argv[1]
toPath = argv[2]
dirPath = argv[3]
txt_path = argv[4]

详情查看:python获取Java传参demo

### 调用Python脚本的方法 为了实现从Java程序中调用Python脚本传递参数,可以采用Jython这一工具来完成此操作。然而需要注意的是,如果在Python代码里引入了第三方库(例如`sklearn`),可能会遇到兼容性问题[^1]。 对于简单的函数调用以及基本类型的参数传递,Jython能够很好地支持这些需求。但是由于Jython不完全支持所有的C扩展模块,因此像`sklearn`这样的依赖于C语言编写的底层优化的库,在Jython环境下可能无法正常工作。 针对这种情况的一个解决方案是通过命令行执行标准CPython解释器运行Python脚本利用进程间通信机制(如输入输出流)来进行数据交换。另一种方法则是借助REST API或者gRPC等网络服务形式建立两者之间的桥梁。 另外值得注意的是,除了上述提到的技术栈之外,还有其他一些方式也可以满足跨语言编程的需求,比如使用JNI(Java Native Interface)直接加载动态链接库中的Python解析器实例;或者是基于文件系统的临时存储作为中介载体等等。 ```java // 使用ProcessBuilder启动外部Python进程的例子 import java.io.BufferedReader; import java.io.InputStreamReader; public class CallPythonFromJava { public static void main(String[] args) throws Exception { ProcessBuilder pb = new ProcessBuilder("python", "script.py", arg1, arg2); Process p = pb.start(); BufferedReader reader = new BufferedReader(new InputStreamReader(p.getInputStream())); String line; while ((line = reader.readLine()) != null) { System.out.println(line); } } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值