java执行python代码_使用Java执行python代码并得到结果

由于一些功能用python代码实现会更加方便(python有那么多实用的库真的香),所以可以用python实现部分代码并通过java来调用执行。

python代码文件 test.py

import time

for i in xrange(1,10):

print("process: " + str(i))

time.sleep(2)

print("Finish.........")

加入time.sleep(2)让python的输出有停顿间隔性。主要是为了验证java执行python代码的时候是异步执行还是同步执行,说白了就是为了验证java调用python的时候是不是只是取得一瞬间的输出,或者验证当python执行比较慢的时候,java代码流程是否会等待python代码执行完成。

java代码文件 ExecutePy.java

原理就是在命令行中输入python test.py来执行python的代码,并读取控制台中python文件的输出。

Java中通过Runtime.getRuntime()得到当前JVM虚拟机执行的环境。

import java.io.BufferedReader;

import java.io.IOException;

import java.io.InputStreamReader;

public class ExecutePy

{

public static void main(String[] args) {

try {

String exe = "python";

String command = "/Users/jinchengll/Documents/temp/test.py";

String[] cmdArr = new String[] { exe, command };

Process process = Runtime.getRuntime().exec(cmdArr);

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

String line;

while( ( line = in.readLine() ) != null ) {

System.out.println(line);

}

in.close();

int result = process.waitFor();

System.out.println("执行结果:" + result);

} catch (IOException | InterruptedException e) {

e.printStackTrace();

}

}

}

结果

jinchengll temp $java ExecutePy

process: 1

process: 2

process: 3

process: 4

process: 5

process: 6

process: 7

process: 8

process: 9

Finish.........

执行结果:0

总结

通过以上方法可以使用Java调用python代码并获得输出,但是存在一个问题是Java获取python的输出并不是马上就能获取到,需要等python代码全部执行完了,Java才会开始读取python的输出并输出到Java的控制台上。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值