您好,登錄后才能下訂單哦!
小編給大家分享一下java調(diào)用python腳本方式有哪些,希望大家閱讀完這篇文章后大所收獲,下面讓我們一起去探討吧!
常見(jiàn)的java調(diào)用python腳本方式有兩種,下面給大家介紹一下:
·通過(guò)Jython.jar提供的類庫(kù)實(shí)現(xiàn)
·通過(guò)Runtime.getRuntime()開啟進(jìn)程來(lái)執(zhí)行腳本文件
python學(xué)習(xí)網(wǎng),大量的免費(fèi)python視頻教程,歡迎在線學(xué)習(xí)!
這兩種方法我都嘗試過(guò),個(gè)人推薦第二種方法,因?yàn)镻ython有時(shí)需要用到第三方庫(kù),比如requests,而Jython不支持。所以本地安裝Python環(huán)境并且安裝第三庫(kù)再用Java調(diào)用是最好的方法。
下面通過(guò)兩個(gè)小例子,分別是不帶參數(shù)和帶參數(shù)的,展示如何使用Java調(diào)用Python腳本:
Python代碼:
def hello(): print('Hello,Python') if __name__ == '__main__': hello()
Java代碼:
import java.io.BufferedReader; import java.io.InputStreamReader; public class HelloPython { public static void main(String[] args) { String[] arguments = new String[] {"python", "E://workspace/hello.py"}; try { Process process = Runtime.getRuntime().exec(arguments); 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表示我們調(diào)用python腳本成功, //返回值為1表示調(diào)用python腳本失敗,這和我們通常意義上見(jiàn)到的0與1定義正好相反 int re = process.waitFor(); System.out.println(re); } catch (Exception e) { e.printStackTrace(); } } }
其中說(shuō)明一點(diǎn),BufferedReader in = new BufferedReader(new InputStreamReader(process.getInputStream(),"GBK"));這段代碼中的GBK是為了防止Python輸出中文時(shí)亂碼加的。
運(yùn)行結(jié)果:
接下來(lái)是帶參數(shù)的,Python代碼:
import sys def hello(name,age): print('name:'+name) print('age:'+age) if __name__ == '__main__': hello(sys.argv[1], sys.argv[2])
Java代碼:
import java.io.BufferedReader; import java.io.InputStreamReader; public class HelloPython { public static void main(String[] args) { String[] arguments = new String[] {"python", "E://workspace/hello.py","lei","23"}; try { Process process = Runtime.getRuntime().exec(arguments); 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表示我們調(diào)用python腳本成功, //返回值為1表示調(diào)用python腳本失敗,這和我們通常意義上見(jiàn)到的0與1定義正好相反 int re = process.waitFor(); System.out.println(re); } catch (Exception e) { e.printStackTrace(); } } }
運(yùn)行結(jié)果:
看完了這篇文章,相信你對(duì)java調(diào)用python腳本方式有哪些有了一定的了解,想了解更多相關(guān)知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道,感謝各位的閱讀!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。