新聞中心
常見的Java調(diào)用python腳本方式有兩種,下面給大家介紹一下:

成都創(chuàng)新互聯(lián)服務項目包括托克遜網(wǎng)站建設、托克遜網(wǎng)站制作、托克遜網(wǎng)頁制作以及托克遜網(wǎng)絡營銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術優(yōu)勢、行業(yè)經(jīng)驗、深度合作伙伴關系等,向廣大中小型企業(yè)、政府機構等提供互聯(lián)網(wǎng)行業(yè)的解決方案,托克遜網(wǎng)站推廣取得了明顯的社會效益與經(jīng)濟效益。目前,我們服務的客戶以成都為中心已經(jīng)輻射到托克遜省份的部分城市,未來相信會繼續(xù)擴大服務區(qū)域并繼續(xù)獲得客戶的支持與信任!
·通過Jython.jar提供的類庫實現(xiàn)
·通過Runtime.getRuntime()開啟進程來執(zhí)行腳本文件
python學習網(wǎng),大量的免費python視頻教程,歡迎在線學習!
這兩種方法我都嘗試過,個人推薦第二種方法,因為Python有時需要用到第三方庫,比如requests,而Jython不支持。所以本地安裝Python環(huán)境并且安裝第三庫再用Java調(diào)用是最好的方法。
相關推薦:《Python基礎教程》
下面通過兩個小例子,分別是不帶參數(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();
}
}
}其中說明一點,BufferedReader in = new BufferedReader(new InputStreamReader(process.getInputStream(),"GBK"));這段代碼中的GBK是為了防止Python輸出中文時亂碼加的。
運行結果:
接下來是帶參數(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();
}
}
}運行結果:
分享標題:創(chuàng)新互聯(lián)Python教程:java如何調(diào)用python腳本
URL網(wǎng)址:http://www.dlmjj.cn/article/cdcpsch.html


咨詢
建站咨詢
