打工人打工魂,打工的必會java調用python的幾種用法

2021-01-07 酷扯兒

本文轉載自【微信公眾號:五角錢的程式設計師,ID:xianglin965】,經微信公眾號授權轉載,如需轉載與原文作者聯繫

圖丨pexels

java調用python的幾種用法(看這篇就夠了)

在java類中直接執行python語句

準備工作:

創建maven工程,結構如下:到官網

https://www.jython.org/download.html

下載Jython的jar包或者在maven的pom.xml文件中加入如下代碼:

<dependency>java<groupId>org.python</groupId> <artifactId>jython-standalone</artifactId> <version>2.7.0</version></dependency>

創建JavaRunPython.java類:

import org.python.util.PythonInterpreter;public class JavaRunPython {public static void main(String[] args) { PythonInterpreter interpreter = new PythonInterpreter(); interpreter.exec("a='hello world'; "); interpreter.exec("print a;"); }}

2.在java中直接調用python腳本

在本地的D盤創建一個python腳本,文件名字為javaPythonFile.py,文件內容如下:

a = 1b = 2print (a + b)

創建JavaPythonFile.java類,內容如下:

import org.python.util.PythonInterpreter;public class JavaPythonFile {public static void main(String[] args) { PythonInterpreter interpreter = new PythonInterpreter(); interpreter.execfile("D:\\javaPythonFile.py"); }}

輸出結果如下:

注意:以上兩個方法雖然都可以調用python程序,但是使用Jpython調用的python庫不是很多,如果你用以上兩個方法調用,而python的程序中使用到第三方庫,這時就會報錯java ImportError: No module named xxx。遇到這種情況推薦使用下面的方法,即可解決該問題。

3.使用Runtime.getRuntime()執行python腳本文件,推薦使用

為了驗證該方法可以運行含有python第三方庫的程序,在本地的D盤創建一個python腳本,文件名字為demo1.py,代碼如下:

import numpy as npa = np.arange(12).reshape(3,4)print(a)

可以看到程序中用到了numpy第三方庫,並初始化了一個3×4的一個矩陣。

下面來看看怎麼用Runtime.getRuntime()方法來調用python程序並輸出該結果,java代碼如下:

import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;public class Demo1 {public static void main(String[] args) { // TODO Auto-generated method stub Process proc; try { proc = Runtime.getRuntime().exec("python D:\\demo1.py");// 執行py文件 //用輸入輸出流來截取結果 BufferedReader in = new BufferedReader(new InputStreamReader(proc.getInputStream())); String line = null; while ((line = in.readLine()) != null) { System.out.println(line); } in.close(); proc.waitFor(); } catch (IOException e) { e.printStackTrace(); } catch (InterruptedException e) { e.printStackTrace(); } }}

輸出的結果如下圖所示:

可以看到運行成功了,但有的朋友可能會問了,怎麼在python程序中函數傳遞參數並執行出結果,下面我就舉一例來說明一下。

先寫一個python的程序,代碼如下:

import sysdef func(a,b):return (a+b)if __name__ == '__main__': a = [] for i in range(1, len(sys.argv)): a.append((int(sys.argv[i]))) print(func(a[0],a[1]))

其中sys.argv用於獲取參數url1,url2等。而sys.argv[0]代表python程序名,所以列表從1開始讀取參數。

以上代碼實現一個兩個數做加法的程序,下面看看在java中怎麼傳遞函數參數,代碼如下:

int a = 18;int b = 23;try {String[] args1 = new String[] { "python", "D:\\demo2.py", String.valueOf(a), String.valueOf(b) }; Process proc = Runtime.getRuntime().exec(args1);// 執行py文件 BufferedReader in = new BufferedReader(new InputStreamReader(proc.getInputStream())); String line = null; while ((line = in.readLine()) != null) { System.out.println(line); } in.close(); proc.waitFor();} catch (IOException e) { e.printStackTrace();} catch (InterruptedException e) { e.printStackTrace();}

在來一個實戰案例---模型獲取相似關鍵詞:

調用pyhon模型

java代碼

package com.hadoop.flowsum;/*

作者 :XiangLin創建時間 :2020/10/26 9:55文件 :testpython.javaIDE :IntelliJ IDEA*/import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.HashMap;import java.util.Iterator;import java.util.Map;import java.util.Set;public class Demo1 {public static String getType(Object o){ //獲取變bai量類型方法du return o.getClass().toString(); //使用int類型的getClass()方法 } public static void main(String[] args) throws IOException, InterruptedException { // TODO Auto-generated method stub String cmds = String.format("python D:word2vec\\testsimilar.py %s","中國"); Process pcs = Runtime.getRuntime().exec(cmds); pcs.waitFor(); BufferedReader in = new BufferedReader(new InputStreamReader(pcs.getInputStream(),"GB2312")); Map<String, String> map = new HashMap<>(); String line = null;// System.out.println(in.readLine()); while ((line = in.readLine()) != null) { System.out.println(line); String[] s = line.split("\t");// System.out.println(s[0]+s[1]); map.put(s[0],s[1]); }// System.out.println(in.readLine()); if (in.readLine() == null){ System.out.println("yes hhhhhh"); }// String key1 = (String) map.keySet().toArray()[0]; String key1 = (String) map.keySet().toArray()[0]; String d1 = map.get(key1); double xx = Double.parseDouble(d1);// System.out.println(getType(xx));// if (xx > 0.6){// System.out.println("nice ................");// } }}

python代碼:

# * coding:utf-8_*_# 作者 :XiangLin# 創建時間 :2020/10/26 9:14# 文件 :testsimilar.py# IDE :PyCharmimport osimport timeimport warningsimport sys# import config# import loggingfrom gensim.models import Word2Vec# from gensim.models.word2vec import LineSentence, PathLineSentences# from pretreatment.pretreatment import PreDealwarnings.filterwarnings(action='ignore', category=UserWarning, module='gensim')model = Word2Vec.load(r"D:\\model\\word2vec.model")def similarwords(keyword, tops=5):# 默認獲取前10個相似關鍵詞 start = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time())) # print("start execute Word2vec, get similar keywords! Time:" + start +">>>>>>>>>>>>>>>>>>>>>") try: # model = Word2Vec.load(modelpath) words = model.wv.most_similar(keyword, topn=tops) except KeyError: # print("word '%s' not in vocabulary" % keyword) return None end = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time())) if not words: return None # res = [[item[0], item[1]] for item in words] # 相似關鍵詞及其相似度 res = [] for word in words: res.append([word[0], word[1]]) print(word[0], "\t", word[1]) # print("get similar keywords end!................... Time:" + end + ">>>>>>>>>>>>>>>>>>>>>") # print(res) return resif __name__ == '__main__': word = sys.argv[1]; similarwords(word)

輸出:

相關焦點

  • 打工人打工魂,打工人吃飽了驚豔所有人
    最近打工人這個梗真的過不去了,你瞧,打工人坐輕軌去打工也逃脫不了被打工人支配的恐懼。打工人的早班時間,閱讀打工人印的早報。好傢夥,這個標題,是在提醒我加班嗎?曾經, 「竊·格瓦拉」說:打工是不可能打工的,這輩子都不可能打工的。今天,「打工人」說:打工人,打工魂,打工人都是人上人。「竊·格瓦拉,可能有人忘了這個人,小編我幫你們回憶回憶。
  • 打工人打工魂全文 打工都是人上人是什麼梗
    打工人打工魂全文「人是鐵,工是鋼,一天不打憋得慌!」「打工人,打工魂,打工人都是人上人!」一夜之間,全網風向突變,不管是保安小王、前臺Lisa還是外企高管、程式設計師大咖,大家都有了一個統一的名字——打工人。
  • 打工人語錄經典語錄合集 打工人,打工魂,打工人都是人上人
    川北在線核心提示:原標題:打工人語錄經典語錄合集 打工人,打工魂,打工人都是人上人 想必各位小夥伴最近的朋友圈微博都被打工人刷屏了吧,打工人是一個新出來的梗,是年輕人中流行起來的一種新的稱呼,打工人梗崛起讓網絡上也流行起來打工人語錄,那麼打工人語錄經典語錄有哪些呢?
  • 打工人的自我修養——「打工人打工魂,打工也要愛自己」
    打工人! 最近打工人這個梗真的過不去了,每天我都會在微信裡收到各種朋友發來的早安午安晚安的問候,每一個段子都超級有梗: 沒進電子廠之前我有夢,關於文學,關於愛情,關於穿越世界的旅行。而今我在廠裡上著班,零件和零件碰到一起,都是夢破碎的聲音,早安,打工人!
  • 打工人打工魂,打工人必備的英文表達
    有人說:小時候,我以為打工是背著蛇皮袋,踏上綠皮火車去遠方的工地。長大後才發現,只要是上班都叫打工。也有人說:生活中80%的痛苦來源於打工,但如果我放棄打工,那麼就會有100%的痛苦來源於沒錢。 「打工人」一詞爆紅網絡,在各個社交平臺,很多年輕人都說自己是「打工人」。「打工人」是指在各行各業工作的人。不管你是公司高管,還是普通職員,都是「打工人」。
  • 「打工人,打工魂」 填好問卷再出門!
    「打工人,打工魂」 填好問卷再出門!△網友自製「打工人」表情包網友用自嘲,消解打工的苦悶——打工不易但「打工人」可以選擇苦中作樂▽▽▽他們無聲蟄伏用熊熊燃燒的「打工魂」為「打工人」添注新的動力
  • 早安,打工人,打工魂,打工都是人上人!
    打工人,打工魂,打工都是人上人!靠別人是公主,「靠你嘰哇」是日本人,靠自己是光榮的打工人!打工累嗎?累。但是我不能哭,因為騎電動車的時候擦眼淚不安全。頭等艙可以優先登機,銀行VIP可以不用排隊,演唱會最貴的票位置也最好,世界從不平等,你有多努力,就有多特殊,早安,打工人!不拼爹,不拼娘,不拼工作,不拼錢,我們打工人只拼命。打工讓我們身心愉悅,節假日是掏空我們的身體。世上有兩種最耀眼的光芒,一種是太陽,一種是打工人努力的模樣。
  • 打工人、打工魂——《非一般職場》
    打工人,打工魂,打工都是人上人!你還在整日搬磚麼?你還在忍受辦公室政治的層層套路麼?你想嘗試另一種職場生活麼?在近期火熱的「早安,打工人」的玩梗浪潮中,《非一般職場》這款打工人模擬器好巧不巧地在steam開啟了EA測試,它展現的那個既荒誕又現實的職場正巧暗合了如今打工人半自嘲半勵志的吐槽。
  • 前往打工的路上,早安,打工人的專屬文案。
    10:打工不僅能致富,還能交友娶媳婦。打工人,打工魂,打工都是人上人。家人們早上好! 11:很喜歡打工人的一句話:打工賺不了幾個錢,但是多打幾份工可以讓你沒時間花錢。
  • 「打工人,打工魂,打工才是人上人」,這句話一夜爆火!今天阿拉都是...
    一夜之間, 「打工人」的梗刷爆網絡! 管你什麼高管、碼農、前臺Lisa… 每個人都自嘲自己是打工人。
  • 一夢江湖也流行打工人梗?江湖打工人報導,玩家:打工魂熊熊燃燒
    最近,「打工人梗」迅速火遍全網,相信大家在自己的社交圈中都有看到過這種「打工人」的身影,而《一夢江湖》(原《楚留香》手遊)也迎來了「打工人熱潮」,今天小編就來聊聊《一夢江湖》中的打工人。《一夢江湖》最常見的打工人應該是各種搬磚黨了,相信很多玩家都有過搬磚經歷。《一夢江湖》中的很多日常玩法都可以懸賞出去,這樣可以減輕玩家的日常任務,讓玩家有更多時間做自己喜歡的任務。而玩家懸賞出去的那些日常則有「一夢江湖打工人」來接取幫忙完成,所以在《一夢江湖》中經常會看到一些勤勞的打工人往返於各種副本出口,你們是不是也想到了自己當初接懸賞搬磚的情景?
  • 打工人,打工魂,「打工人」梗一夜爆紅網絡的背後……
    如果,你是關注網際網路的弄潮兒,那麼最近一段時間,一定刷到過這個詞——「打工人」。不管你是從事體力勞動者還是腦力、技術勞動者,不論你的工作多麼光鮮、多麼亮麗,只要是「上班的」,本質上都是打工人!打工梗一火,就迅速在網上掀起了一番熱潮,為了趕上趟,不少網友自發開啟了表情包鬥圖、文案大賽,不得不說,太有才了……相比之前的「社畜」,從「畜」變成「人」,打工人保留了打工者的自尊和臉,而且相比社畜,不再充滿喪氣,而是體現了「打工可能會少活十年,不打工我一天也活不下去」的鋼鐵意志。
  • 打工人都有打工魂,開言英語用英語打開「打工」新世界
    相信最近大家的朋友圈都被「打工人打工魂,打工都是人上人」刷屏了。對於我們這些上班的社畜來說,「打工人」可以說是最適合不過的形容詞了。作為知名在線教育品牌,開言英語當然也要與時俱進了,將網絡熱梗融合課程,用英語打開「打工」新世界。
  • 早安打工人精彩語錄 適合打工人的心酸語錄說說
    早安打工人精彩語錄早安,打工人。說「上班」,就感覺像是為生活所迫,不情不願。說「打工」,就像是帶著美好的憧憬,用努力和汗水去創造未來!早安!打工人!記住,打工才是王道,我們都要做打工人。人可以一天不吃飯,但不能一天不打工。
  • 早安打工人是什麼意思 打工人的心酸和無奈心情
    打工人即打工仔,是現在上班族的自稱。打工人往往起早貪黑,拿著微薄的工資,但工作卻十分辛苦,最近國慶假期結束了,大家又重新回到打卡上班的痛苦生活中。於是網際網路上的打工人便會互相發雞湯互相鼓勵,詼諧調侃式的文字,抒發了廣大上班族們為生活辛苦奔波的內心感受。
  • 打工人是什麼梗 打工人的心酸和無奈心情說說 朋友圈打工人語錄
    打工人往往起早貪黑,拿著微薄的工資,但工作卻十分辛苦,最近不是國慶假期結束了,大家又要會重新回到打卡上班的痛苦生活當中,而假期剛過,很多人顯然還是有些緩不過來的。於是網際網路上的打工人便會互相發雞湯互相鼓勵。
  • 打工人,打工魂,網上辦公要留神!
    但有時候,也會有一些來路不明的充電寶被不法分子內置木馬、數據同步、數據傳輸等惡意程序,個人隱私有被竊取的風險。一個知名軟體會有N個「模仿者」,這些「模仿者」大多與官方應用名字、圖標、配色大同小異, 極具迷惑性,可能危及個人信息和財產安全。
  • 抖音上的打工人是什麼梗 早安打工人
    抖音上的打工人是什麼梗 早安打工人 來源:www.18183.com作者:藍藍鳳時間:2020-11-18 打工人,打工魂,打工永遠難成神!
  • 來了,就是深圳打工人!加油,打工人!
    深圳,一座由打工人撐起來的城市。 在這裡,無論你是南山碼農,還是福田精英,無論你是羅湖白領,還是龍華外賣員,英雄不問出處。 除去那些表面的精緻包裝和華麗頭銜,你我的本質都是【打工人】。
  • 適合「打工人」的沙雕文案:打工人 打工魂 打工人都是人上人!
    2. 5.生活裡80%的痛苦來源於打工,但是我知道,如果不打工就會有100%的痛苦來源於沒錢,所以在打工和沒錢之間,我選擇自殺,打你嗎的工,老子困得要死,老子就是懶狗,就是不想上班,對不起,失態了,早安,打工人!