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

溫馨提示×

溫馨提示×

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

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

java怎么調用Python文件包括傳參

發布時間:2021-04-25 10:00:53 來源:億速云 閱讀:438 作者:小新 欄目:開發技術

這篇文章主要介紹了java怎么調用Python文件包括傳參,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

常用的java框架有哪些

1.SpringMVC,Spring Web MVC是一種基于Java的實現了Web MVC設計模式的請求驅動類型的輕量級Web框架。2.Shiro,Apache Shiro是Java的一個安全框架。3.Mybatis,MyBatis 是支持普通 SQL查詢,存儲過程和高級映射的優秀持久層框架。4.Dubbo,Dubbo是一個分布式服務框架。5.Maven,Maven是個項目管理和構建自動化工具。6.RabbitMQ,RabbitMQ是用Erlang實現的一個高并發高可靠AMQP消息隊列服務器。7.Ehcache,EhCache 是一個純Java的進程內緩存框架。

主要有兩個方式

第一個是通過jython,這個方法不太好用,當Python用到第三方庫的時候,由于jython不可能涵蓋所有python第三方類庫,

所以建議用第二種Runtime.getRuntime()開啟進程來執行python腳本文件

String[] arguments = new String[] {"python","D:\\ccc\\1.py",str};//指定命令、路徑、傳遞的參數
        try {
         Writer out = response.getWriter(); //獲得HttpServletResponse輸出流對象
            Process process = Runtime.getRuntime().exec(arguments);//開啟進程來執行腳本文件
            BufferedReader in = new BufferedReader(new InputStreamReader(process.getInputStream()));//獲取字符輸入流對象
            String line = null;  
          while ((line = in.readLine()) != null) {  
              JSONArray Resulet = JSONArray.fromObject(util.DataHandle(line.toString()));//讀取到結果(一行文字)進行數據處理
              String json = Resulet.toString();
              out.write(json);//使用輸出流對象向小程序發送字符數據
          }  
          out.close();
          in.close();  
        } catch (Exception e) {
            e.printStackTrace();
        }

第一行代碼傳遞的參數str就是圖片的路徑(我這實例代碼只傳遞一個參數,如果傳遞多個參數直接在str,后面加,格式都是一樣,Python代碼接收參數也是不一樣,接著往下看),剩下的代碼我都上了注釋

from keras.models import load_model
import numpy as np
from keras.preprocessing import image
import sys
import re
def predict(pic_dir):
    model = load_model("D:/ccc/model.h6")
    images = image.load_img(pic_dir, target_size=(32,32))
    images = image.img_to_array(images)
    images = np.expand_dims(images, axis=0)
    images=np.array(images,dtype=int)
    images_normalize=images.astype("float32")/255.0    
    pre_y=model.predict(images_normalize)
    pre_y=pre_y.reshape(-1)
    np.set_printoptions(suppress=False)   
    pre_y=[pre_y[i]*100 for i in range(len(pre_y))]
    pre_y=[str(pre_y[i]) for i in range(len(pre_y))]    
    for i in range(len(pre_y)):
        if pre_y[i].find('e',0,len(pre_y[i]))!=-1:
            wei=int(pre_y[i][len(pre_y[i])-1])-1
            pre_y[i]=re.sub(r'e-.*$','',pre_y[i])
            pre_y[i]=re.sub(r'[^0-9]','',pre_y[i])
            for j in range(0,wei):
                    pre_y[i]='0'+pre_y[i]
            pre_y[i]='0'+'.'+pre_y[i]        
    pre_y=[pre_y[i]+"%" for i in range(len(pre_y))]
    return pre_y
prediction=predict(sys.argv[1])
print(prediction)

上面是Python代碼,prediction=predict(sys.argv[1])代碼里面的sys.argv[1]就是接收傳遞過來的參數str,如果多個參數就以此類推接收

java怎么調用Python文件包括傳參

小程序接收到數據并輸出到控制臺

java怎么調用Python文件包括傳參

然后就是顯示數據,給我小伙伴的深度學習點個贊!準確率還是挺高的

補充:Java調用Python文件

有時候我們想要通過java調用一個python文件,而這個python文件又必須在特定的virtualenv虛擬環境下才能運行。如果直接將這個python文件所需要的包安裝到python系統環境下難免有些暴力

我想到了如下方法解決這個問題:

創建虛擬環境后,如果虛擬環境的文件夾叫做env,我們平時激活虛擬環境的命令是 source env/bin/activate 。在bin目錄中還有一個文件叫做activate_this.py,我們通過這個文件切換到虛擬環境,在一個python文件(假設叫a.py)中調用該文件(activate_this.py),再書寫想要調用的目標python文件,再由Java調用a.py即可完成指定虛擬環境下的python文件調用。

python文件名為a.py,代碼如下

import os
activate_this = 'path/to/activate_this.py'
execfile(activate_this, dict(__file__=activate_this))
os.system("python target.py")

java代碼

import java.io.BufferedReader;
import java.io.InputStreamReader; 
public class Test {
 public static void main(String[] args) {
  try {
   System.out.println("start");
   Process pr = Runtime.getRuntime().exec("python /home/kui/桌面/a.py");
   BufferedReader in = new BufferedReader(new InputStreamReader(pr.getInputStream()));
   String line;
   while ((line = in.readLine()) != null) {
    System.out.println(line);
   }
   in.close();
   pr.waitFor();
   System.out.println("end");
  } catch (Exception e) {
   e.printStackTrace();
  }
 }
}

感謝你能夠認真閱讀完這篇文章,希望小編分享的“java怎么調用Python文件包括傳參”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!

向AI問一下細節

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

AI

新郑市| 张北县| 湘乡市| 江油市| 宣城市| 贵州省| 秦安县| 朔州市| 沈阳市| 连南| 社会| 黄陵县| 江口县| 夏邑县| 婺源县| 福建省| 锦州市| 三原县| 兴业县| 当涂县| 西畴县| 邵武市| 静宁县| 海盐县| 疏附县| 云和县| 永顺县| 海淀区| 满洲里市| 兰考县| 夹江县| 彰化市| 平潭县| 洛隆县| 塘沽区| 闻喜县| 福鼎市| 门头沟区| 临江市| 潞城市| 屏东市|