小編給大家分享一下java調(diào)用python腳本方式有哪些,希望大家閱讀完這篇文章后大所收獲,下面讓我們一起去探討吧!
站在用戶的角度思考問題,與客戶深入溝通,找到石景山網(wǎng)站設(shè)計(jì)與石景山網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗(yàn),讓設(shè)計(jì)與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個(gè)性化、用戶體驗(yàn)好的作品,建站類型包括:成都網(wǎng)站制作、成都網(wǎng)站設(shè)計(jì)、外貿(mào)營銷網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、國際域名空間、虛擬主機(jī)、企業(yè)郵箱。業(yè)務(wù)覆蓋石景山地區(qū)。
常見的java調(diào)用python腳本方式有兩種,下面給大家介紹一下:
·通過Jython.jar提供的類庫實(shí)現(xiàn)
·通過Runtime.getRuntime()開啟進(jìn)程來執(zhí)行腳本文件
python學(xué)習(xí)網(wǎng),大量的免費(fèi)python視頻教程,歡迎在線學(xué)習(xí)!
這兩種方法我都嘗試過,個(gè)人推薦第二種方法,因?yàn)镻ython有時(shí)需要用到第三方庫,比如requests,而Jython不支持。所以本地安裝Python環(huán)境并且安裝第三庫再用Java調(diào)用是最好的方法。
下面通過兩個(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腳本失敗,這和我們通常意義上見到的0與1定義正好相反 int re = process.waitFor(); System.out.println(re); } catch (Exception e) { e.printStackTrace(); } } }
其中說明一點(diǎn),BufferedReader in = new BufferedReader(new InputStreamReader(process.getInputStream(),"GBK"));這段代碼中的GBK是為了防止Python輸出中文時(shí)亂碼加的。
運(yùn)行結(jié)果:
接下來是帶參數(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腳本失敗,這和我們通常意義上見到的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)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!