Java调用Python脚本

这几天和之前工作的同事聊了一下Java和Python的一些底层。之前工作的同事目前在IBM中供职,目前IBM已经在系统应用架构中开始尝试语言异构以发挥出各自的优点弥补对方的缺点。我觉的这是一个趋势,为什么这么说呢?任何编程语言哪怕在未来的某个时间点中再创造出一个全新的编程语言,这些编程语言无法在各个方面都表现出特别的优势。说白了就是各个编程语言再强也只是在某方面或者某几个方面很强,不可能全部都强。你说C语言快,内存管理起来比较麻烦,你说Java不好学,但速度较快,安全性高、性能稳定、生态完善、人才济济;你说Python好学简单易用,但速度慢;你说go语言天生为高并发而生,但生态不完善,人才较少。所以各个语言都是各有长处也各有短板。所以我们就必须考虑进行融合取各个编程语言的长处补齐短板,这样才能无敌。
这里我就以目前市场上两大主编程语言Java和Python为例让Java调用Python的脚本。

  • Python脚本:
args = sys.argv[0:]
print(args)
a=1
b=2
c=3
print(a+b+c)
  • Java代码
package com.nnd.bean;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;

public class JavaCallingPython {

	public static void main(String[] args) throws IOException, Exception {
        // Python脚本路径及参数
        String pythonScript = "C:\\Users\\gaoke\\Desktop\\test.py";
        
        // 要传递的参数列表
        String[] arguments = {"1", "2abv"};
        
        ProcessBuilder processBuilder = new ProcessBuilder("python", pythonScript);
        processBuilder.command().addAll(Arrays.asList(arguments));//向python中传入参数是需要加,不传入的时候不需要这句代码
        Process process = processBuilder.start();
        
        BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
        StringBuilder output = new StringBuilder();
        String line;
        
        while ((line = reader.readLine()) != null) {
            output.append(line).append("\n");
        }
        
        int exitCode = process.waitFor();
        
        System.out.println("Exit Code: " + exitCode);
        System.out.println("Output:\n" + output.toString());
    }
}


  • 运行Java代码以后就可以得到相应Python计算的结果了:
    在这里插入图片描述
  • 11
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值