方法一:使用Runtime.exec()
假设这里有一个Python程序,hello.py
def hello():
print("hello world!")
if __name__=='__main__':
print(hello())
Java调用代码如下:
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args) {
try {
String pythonScriptPath = "D/PyCharmProjects/Hello/hello.py";
Process process = Runtime.getRuntime().exec("python " + pythonScriptPath);
BufferedReader in = new BufferedReader(new InputStreamReader(process.getInputStream()));
String line;
while ((line = in.readLine()) != null) {
System.out.println(line);
}
in.close();
int exitCode = process.waitFor();
System.out.println("Exit code: " + exitCode);
} catch (Exception e) {
e.printStackTrace();
}
}
}
方式2:使用 ProcessBuilder()
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
public class Main {
public static void main(String[] args) {
try {
String pythonScriptPath = "D/PyCharmProjects/Hello/hello.py";
List<String> commands = new ArrayList<>();
commands.add("python");
commands.add(pythonScriptPath);
ProcessBuilder pb = new ProcessBuilder(commands);
Process process = pb.start();
BufferedReader in = new BufferedReader(new InputStreamReader(process.getInputStream()));
String line;
while ((line = in.readLine()) != null) {
System.out.println(line);
}
in.close();
int exitCode = process.waitFor();
System.out.println("Exit code: " + exitCode);
} catch (Exception e) {
e.printStackTrace();
}
}
}