1. 程式人生 > >Java呼叫Python指令碼(Python3,Windows10系統)

Java呼叫Python指令碼(Python3,Windows10系統)

介紹下如何在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,程式裡面有中文的話要轉碼,即使是註釋的也不行)