在Java程序中需要调用Python程序,使用以下代码实现:
public String getProcessOutput() throws IOException, InterruptedException {
// 参数1是运行的命令,参数2是程序所在路径
ProcessBuilder processBuilder = new ProcessBuilder(
"python3", System.getProperty("user.dir")+"/Visualization_Py/ParsePy/Parse_snooper.py");
processBuilder.redirectErrorStream(true);
Process process = processBuilder.start();
System.out.println("start: " + process.isAlive());
StringBuilder processOutput = new StringBuilder();
try (BufferedReader processOutputReader = new BufferedReader(
new InputStreamReader(process.getInputStream()));) {
String readLine;
while ((readLine = processOutputReader.readLine()) != null) {
processOutput.append(readLine + System.lineSeparator());
}
process.waitFor();
} catch (IOException e) {
System.out.println(e.getMessage());
} catch (InterruptedException e) {
System.out.println(e.getMessage());
} finally {
if (process != null) {
process.destroy();
}
}
return processOutput.toString().trim();
}
该方法实际上是类似于cmd黑窗口的命令行的方式进行调用的,同时也可以通过上面的方法实现带参数的py程序调用和获取返回结果。