Java呼叫Python指令碼(Python3,Windows10系統)
阿新 • • 發佈:2018-12-21
介紹下如何在Java中呼叫Python指令碼,可能是目前最簡單的方法(●’^'●)。
又是師姐的任務,要求把我的Python程式整合到純Java的系統中。於是在網上又是一頓搜尋,不乏各種厲害的方法。其中最常見的是Jython,聽起來十分高大上,直接把世界上兩種最強大的語言結合了,然後一頓安裝操作之後發現目前只支援Python2(這都什麼時代了,Python2都要跑路了…)。Github上面倒是有個官方的Jython3.5,然而看不明白怎麼用。最終,可能是傳說中的資訊偶遇吧,發現了一個超級簡單的方法,那就是:
從Java呼叫命令列,再從命令列呼叫Python指令碼。
(看起來很Low,好歹也是個方法吧=.=||)
Java呼叫命令列,直接看程式碼:
Process p;
String cmd="python ExecByJava.py \"Hello\" \"World\"";//利用CMD命令呼叫python,包含兩個引數
try{
p = Runtime.getRuntime().exec(cmd);
InputStream fis=p.getInputStream();
InputStreamReader isr=new InputStreamReader(fis);
BufferedReader br=new BufferedReader(isr);
String line=null;
while ((line=br.readLine())!=null){
System.out.println(line);
}
}
catch (IOException e){
e.printStackTrace();
可以看到這裡面要求輸入兩個引數,也就是要傳入到Python中,那麼Python裡面可以這麼寫:
import sys
a = sys.argv[1]
b = sys.argv[2]
print(a)
print(b)
看一下結果:
javac -encoding UTF-8 ExecPyhton.java
java ExecPyhton
(也發現了一個問題,用命令列編譯Java,程式裡面有中文的話要轉碼,即使是註釋的也不行)