1、執行系統調用
public static void main(String[] args) {
try {
Process p = Runtime.getRuntime().exec("c:\\Python32\\python.exe e:\\project\\python\\example.py");
p.waitFor();
System.out.println(p.exitValue());
} catch (Exception e) {
e.printStackTrace();
}
}
p.exitValue()擷取腳本的執行結果,python腳本的退出碼通過sys.exit(errCode)設定。
該方法優點:不需要導入第三方包,通過python.exe直接執行腳本,友善簡單。
2、通過jpython
public static void main(String[] args) {
PythonInterpreter interpreter = new PythonInterpreter();
try {
interpreter.execfile(
"E:\\project\\python\\example.py");
PyInteger res = (PyInteger)interpreter.get("Result");
System.out.println("command return value = " + res);
} catch (Exception e) {
e.printStackTrace();
}
}
該方法優點:java python解釋器,可以深入python腳本内部進行執行函數,擷取變量值等;具有強大的操控性
缺點:1、需要導入jpython包
2、由于是java執行python語句,腳本内部import路徑就存在問題,路徑搜尋相對于java程式所在路徑,而非腳本所在路徑。在腳本裡列印目前檔案路徑的方法可以看出。
3、兩種方式如何選擇
推薦第一種,java調用python腳本各司其職,應當避免java深入python腳本細節,否則java和python的混用的合理性就會受到質疑。