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

2021-01-11 酷扯兒

本文轉載自【微信公眾號:五角錢的程式設計師,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)

輸出:

相關焦點

  • 打工人,打工魂,打工人都是「人上人」
    打工人,打工魂,打工人都是「人上人」。打工人;因為它的通俗易懂,被網友不斷的進行調侃與自嘲,成為2020年最流行的詞語之一。無論你是那個社會階層,通俗地說,呢都是打工人,只是服務對象不同而已。3.打工人不是突然流行出來的,是源於南方的改革開放出現的勞動大軍,開始時候稱呼是:打工仔、打工妹。那個時候社會對這一群體還有一點看不起,比如八九十年代流行的一首歌《我是一個打工仔》,就是打工人自嘲的寫照。但是隨著這些打工仔打工妹通過自己辛勤勞動,獲得了大量的錢財,引來全國人民孔雀東南飛,成為一個壯觀獨特的社會現象。
  • 打工人為什麼會火爆 打工人是什麼梗
    首頁 > 問答 > 關鍵詞 > 打工人最新資訊 > 正文 打工人為什麼會火爆 打工人是什麼梗
  • 打工人是什麼梗 打工人的心酸和無奈心情說說 朋友圈打工人語錄
    打工人往往起早貪黑,拿著微薄的工資,但工作卻十分辛苦,最近不是國慶假期結束了,大家又要會重新回到打卡上班的痛苦生活當中,而假期剛過,很多人顯然還是有些緩不過來的。 於是網際網路上的打工人便會互相發雞湯互相鼓勵。
  • 打工都是人上人是什麼意思-打工都是人上人是什麼梗
    打工都是人上人是什麼梗?最近打工人刷爆網絡,接著有句「打工都是人上人」的話很多網友還不是很清楚,下面小編為大家帶來打工都是人上人意思介紹。  一、意思介紹  工人又被大家親切的稱呼為「社畜」,但是現在好像打工人這個稱呼更受歡迎
  • 打工人是什麼意思什麼梗 打工人說說朋友圈文案怎麼發?
    首頁 > 問答 > 關鍵詞 > 打工人最新資訊 > 正文 打工人是什麼意思什麼梗 打工人說說朋友圈文案怎麼發?
  • 「打工人」是什麼梗 打工人是什麼意思什麼梗
    「打工人」是什麼梗眾所鄒知,給自己增添新的外號是網友們自嘲的表現之一,例如前兩年火起來的「社畜」「搬磚人」等。近段時間,網友們喜歡互相稱之為「打工人」,你知道這個梗是怎麼來的嗎?
  • 回天乏力,鬱郁不得志的當代打工人怎麼就沒了魂?
    都說打工人有打工魂;可是這些懷揣夢想,勇於挑戰自己的職場人,為什麼越幹越沒魂,前赴後繼地變得平庸呢?第二,因為現有平臺永遠無法給你提供跳出整件事來審視已經發生的事兒的問題,所以會出現將「變量」視為「定量」的原則性錯誤,嚴重低估了事情的難度。就像世界上永遠沒有兩盤圍棋能下成同一個模樣,並不是你復盤了上一盤棋,你就肯定能贏下第二局棋。世界上同時有幾千幾萬局的棋在下著,他們互有勝負。而坐在自己棋盤邊的你,甚至沒機會出去看一眼其他人是怎麼下棋的。
  • 都是打工人!
    來源:中國新聞網「打工人,打工魂,打工人是人上人!下午好,各位打工人!」最近,「打工人」這個詞火了,不僅有各種段子和表情包在網上流傳,就連朋友之間聊天,可能都會先問候一句,「你好,打工人!」網友自製打工人表情包「打工人」有著一系列顯著的特徵,比如對現實都有著清醒的認知,就連為什麼打工,他們都有充足的理由。
  • 月入過萬,有房有車,打工人也可以是人上人
    朋友之間的日常問候也變成了一句:「早安,打工人。」「打工使我快樂」等等,大家樂此不彼地調侃別人,還帶著些許自嘲。打工可能會少活十年,但不打工你一天也活不下去。在「打工人」看來,打工並不是一件卑微的事,它可能是你達成夢想前微不足道的一小步,也可能是你追求喜歡的生活裡的一個門檻,更可能是你嚮往成為的故事裡,正在面臨的指引牌,所以,打工人一定要保持初心,砥礪前行!
  • 關於「打工人」的句子,句句入心,值得分享
    1.打工人,打工魂,打工人都是人上人。Migrant workers, the soul of migrant workers, are all human beings.2.不幹活,就沒飯吃,早安,打工人。No work, no food. Good morning, worker.
  • 打工人梗為什麼會爆火真相揭秘 打工人梗出自哪裡什麼意思
    近段時間以來,打工人這個梗非常的火,朋友圈裡面都被:早安,打工人!給刷屏了。這是個什麼梗呢?這個梗是什麼意思呢?為什麼這麼火呢?這個梗的來源介紹,一起來看一下具體的情況。打工人是什麼梗近段時間以來,「打工人」這個詞非常的火,為什麼這麼火呢?
  • 打工人是什麼梗-打工人是什麼意思
    打工人是什麼梗?打工人是意思就是打工仔,現在很多上班族、社畜都這樣稱呼自己。下面小編為大家帶來打工人意思介紹。  打工人往往起早貪黑,拿著一份工資,幹幾份活。
  • 「打工人」到底是個什麼梗?
    這首歌送給@王大橘 感謝你的捧場 不為誰而作的歌 但這是專門為你推送的歌 打工人,打工魂,打工人是人上人! 上午好,各位打工人!
  • 「打工人」爆火網絡,這個又喪又燃的詞,英語怎麼說?
    「打工人,打工魂,打工人是人上人...」各位打工人!大家好!「打工人」這個詞最近爆火,誕生了各種段子和表情包。就連朋友之間聊天,可能都會先問候一句:「你好,打工人!」這句聽起來挺「中二」的話,似乎擊中了人們的興奮點,大家紛紛以「打工人」自居」。
  • 打工人,祝你早、午、晚都安!
    「打工人」又雙叒叕上熱搜了!  各種花式表情包新鮮出爐  在微博、朋友圈瘋狂刷屏  有吃瓜群眾表示自己才一天沒上微博  就感覺跟不上大家衝浪的速度了  「打工人」到底是什麼梗?
  • 打工都是人上人是什麼意思
    最近打工人這個梗非常的火,小夥伴們有沒有經常看到「打工都是人上人」這句話。相信還有很多小夥伴們還不是很清楚打工都是人上人是什麼意思。下面小編給大家帶來打工都是人上人梗的出處及意思介紹,感興趣的小夥伴們一起來看看吧。
  • 最近的「打工人」是什麼梗?
    「皮革廠會倒,小姨子會跑,只有你會打工打到老。早安,打工人!」不知何時起,一句句鏗鏘有力的「打工人宣言」,開始在朋友圈裡流傳。與之類似的,屬於勞動者的網絡熱詞爆梗我們都見過不少:例如從日本傳來的「社畜」,樸實有力的上班代名詞——「搬磚」……這些詞精準有力,火得有理有據。「打工人」也同樣是個好詞。
  • 最近很火的「打工人」,爆火用語又喪又燃!英語該怎麼說?
    「打工人,打工魂,打工人是人上人...」各位打工人!大家好!「打工人」這個詞最近爆火,誕生了各種段子和表情包。就連朋友之間聊天,可能都會先問候一句:「你好,打工人!」這句聽起來挺「中二」的話,似乎擊中了人們的興奮點,大家紛紛以「打工人」自居」。
  • 從社畜到打工人,青年亞文化不喪了?
    「早安,打工人」、「打工人,打工魂,打工都是人上人」、「我們要悄悄打工,然後驚豔所有人」、「打工讓你少活十年,不打工你一天也活不下去」、「打工不僅能致富,還能交友娶媳婦」、「不拼爹不拼媽,我們打工人只拼命」。從朋友圈到社交網站、短視頻,「打工人」成為光速走紅的網絡梗。
  • 當代打工人的囚徒困境
    對於打工人來說,今年更是最為痛苦的一年。這不,「打工人」一詞突然前所未有地火了起來。這在以前,也不是沒人說起過打工,但有的是給自己打工,有的給政府打工,有的是給老闆打工。但現在,強烈的焦慮情緒瀰漫著,大家都幾乎清一色地成為了「打工人」。大家早上問好的時候,不再是以前的吃了嗎,而是變成了氣勢磅礴的「早安,打工人。」