調用方法:
import java.io.BufferedReader; import java.io.InputStreamReader; public class PythonInvoke { public static void invokePy(String[] args) { try { Process process = Runtime.getRuntime().exec(args); //防止Python輸出中文時亂碼 BufferedReader in = new BufferedReader(new InputStreamReader(process.getInputStream(),"GBK")); String line = null; while ((line = in.readLine()) != null) { System.out.println(line); } in.close(); //java代碼中的process.waitFor()返回值為0表示我們調用python腳本成功, //返回值為1表示調用python腳本失敗,這和我們通常意義上見到的0與1定義正好相反 int re = process.waitFor(); System.out.println(re); } catch (Exception e) { e.printStackTrace(); } } }
測試 Test():
import com.cargosmart.alarm.utils.PythonInvoke; public class Test { public static void main(String[] args) { String []para = new String[] {"python", "D://hello.py"}; PythonInvoke.invokePy(para); System.out.println("-----有參------"); String[] arguments = new String[] {"python", "D://hello1.py","lei","23"}; PythonInvoke.invokePy(arguments); } }
python文件
hello.py
def hello(): print('Hello,Python') if __name__ == '__main__': hello()
hello1.py
import sys def hello(name,age): print('name:'+name) print('age:'+age) if __name__ == '__main__': hello(sys.argv[1], sys.argv[2])
控制台結果:
Hello,Python 0 -----有參------ name:lei age:23 0