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

Posted 林老头儿

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用Java执行python代码并得到结果相关的知识,希望对你有一定的参考价值。

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

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的控制台上。

以上是关于使用Java执行python代码并得到结果的主要内容,如果未能解决你的问题,请参考以下文章

Asynctask结果显示重新创建片段后

常用python日期日志获取内容循环的代码片段

java和sql到JList

JAVA并行框架Fork/Join:简介和代码示例

Python 代码动态执行初探

python如何获得js执行之后的源代码,或者是谷歌浏览器“审查元素”得到的源代码?