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

成都創(chuàng)新互聯(lián)服務(wù)項(xiàng)目包括托克遜網(wǎng)站建設(shè)、托克遜網(wǎng)站制作、托克遜網(wǎng)頁(yè)制作以及托克遜網(wǎng)絡(luò)營(yíng)銷(xiāo)策劃等。多年來(lái),我們專(zhuān)注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢(shì)、行業(yè)經(jīng)驗(yàn)、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機(jī)構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,托克遜網(wǎng)站推廣取得了明顯的社會(huì)效益與經(jīng)濟(jì)效益。目前,我們服務(wù)的客戶(hù)以成都為中心已經(jīng)輻射到托克遜省份的部分城市,未來(lái)相信會(huì)繼續(xù)擴(kuò)大服務(wù)區(qū)域并繼續(xù)獲得客戶(hù)的支持與信任!
·通過(guò)Jython.jar提供的類(lèi)庫(kù)實(shí)現(xiàn)
·通過(guò)Runtime.getRuntime()開(kāi)啟進(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ān)推薦:《Python基礎(chǔ)教程》
下面通過(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é)果:
本文標(biāo)題:創(chuàng)新互聯(lián)Python教程:java如何調(diào)用python腳本
URL分享:http://fisionsoft.com.cn/article/cdcpsch.html


咨詢(xún)
建站咨詢(xún)
