通过 processbuilder 将数据结果从 python 传递到 Java 变量

pass data result from python to Java variable by processbuilder

我使用进程生成器 运行 来自 java 的 python 脚本。我可以将数据从 Java 发送到 python 变量(导入 sys 以从 Java 获取数据)。并在 java 中打印出 python 结果。 例如:

public static void main(String a[]){
try{

int number1 = 100;
int number2 = 200;
String searchTerm="water";

ProcessBuilder pb = new ProcessBuilder("C:/Python27/python","D://my_utils.py",""+number1,""+number2,""+searchTerm);
Process p = pb.start();

BufferedReader bfr = new BufferedReader(new InputStreamReader(p.getInputStream()));

System.out.println(".........start   process.........");  
String line = "";     
while ((line = bfr.readLine()) != null){
    System.out.println("Python Output: " + line);
}
System.out.println("........end   process.......");


}catch(Exception e){System.out.println(e);}
}
}

但是,我不知道如何从 python 取回结果并将结果传递给 JAVA 变量 以供进一步使用。怎么做? 我在 JAVA 中将列表作为方法参数传递时遇到问题。 [![在此处输入图片描述][1]][1] [![在此处输入图片描述][2]][2] 如何将变量(return变量 in def MatchSearch() in python)传递给JAVA VARIABLE

据我所知,ProcessBuilder 无法做到这一点。您可以将变量打印到输出并让 Java 解释它。或者你可以使用一些连接 Java 和 Python 更强的 API(例如 Jython)。

您可以将 python 结果保存为 JSON 格式。并使用 java 读取解析器 json 文件以获取内容以创建变量。