中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

java調用python腳本方式有哪些

發布時間:2020-08-14 11:34:16 來源:億速云 閱讀:309 作者:小新 欄目:編程語言

小編給大家分享一下java調用python腳本方式有哪些,希望大家閱讀完這篇文章后大所收獲,下面讓我們一起去探討吧!

常見的java調用python腳本方式有兩種,下面給大家介紹一下:

·通過Jython.jar提供的類庫實現

·通過Runtime.getRuntime()開啟進程來執行腳本文件

python學習網,大量的免費python視頻教程,歡迎在線學習!

這兩種方法我都嘗試過,個人推薦第二種方法,因為Python有時需要用到第三方庫,比如requests,而Jython不支持。所以本地安裝Python環境并且安裝第三庫再用Java調用是最好的方法。

下面通過兩個小例子,分別是不帶參數和帶參數的,展示如何使用Java調用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表示我們調用python腳本成功,
            //返回值為1表示調用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輸出中文時亂碼加的。

運行結果:

java調用python腳本方式有哪些

接下來是帶參數的,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表示我們調用python腳本成功,
            //返回值為1表示調用python腳本失敗,這和我們通常意義上見到的0與1定義正好相反
          int re = process.waitFor();  
          System.out.println(re);
        } catch (Exception e) {
            e.printStackTrace();
        }  
  }
}

運行結果:

java調用python腳本方式有哪些

看完了這篇文章,相信你對java調用python腳本方式有哪些有了一定的了解,想了解更多相關知識,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

玉环县| 邹平县| 浦江县| 定州市| 大关县| 英超| 塔河县| 乌拉特前旗| 临高县| 龙岩市| 永春县| 淄博市| 金坛市| 科尔| 华坪县| 柳河县| 泽库县| 舒城县| 拜城县| 纳雍县| 隆化县| 毕节市| 应用必备| 桃源县| 万源市| 松桃| 岢岚县| 潜江市| 桐柏县| 芦山县| 亚东县| 察隅县| 湟源县| 中西区| 宾川县| 金阳县| 古蔺县| 凤台县| 阳高县| 两当县| 栖霞市|