TestCallPython.java
package com.brown;import java.io.BufferedReader;import java.io.InputStreamReader;public class TestCallPython { public static void main(String[] args) { try { int number1 = 10; int number2 = 32; PRocessBuilder processBuilder = new ProcessBuilder("python", "C:/test.py", "" + number1, "" + number2); Process progress = processBuilder.start(); BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(progress.getInputStream())); int result = new Integer(bufferedReader.readLine()).intValue(); System.out.println("value is : " + result); } catch (Exception e) { // TODO: handle exception } }}C:/test.py
import sysprint(int(sys.argv[1])+int(sys.argv[2]))注意: 这种方式只能接收到python里print的数据。所以如果你需要返回值,可以把返回值打印出来;可能返回值里面有日志等你不需要的数据,你只需把你需要的返回值放在print结果的最后一行,然后读取最后一行。下面是读取返回值(最后一行)的代码:
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(progress.getInputStream()));Stream<String> stream = bufferedReader.lines();List<Object> lines = stream.collect(Collectors.toList());String result = lines.get(lines.size()-1).toString();http://blog.csdn.net/xingjiarong/article/details/49424253
新闻热点
疑难解答