日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

在Java中动态传参调用Python脚本

發布時間:2025/3/14 python 15 豆豆
生活随笔 收集整理的這篇文章主要介紹了 在Java中动态传参调用Python脚本 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

最近,又接觸到一個奇葩的接口,基于老板不斷催促趕時間的情況下,在重寫java接口和復用已有的python腳本的兩條路中選擇了后者,但是其實后者并沒有好很多,因為我是一個對python的認識僅限于其名稱拼寫的人,所以,我將把我這一天內從配置環境到最終剛成功調用腳本的過程整理一下,分享給大家。


首先,我先大體上整理一下我的思路(以下以py代替python):?
1. py腳本如何運行??
2. java中如何調用py腳本??
3. 如何在java中向py腳本中動態傳參。?
4. 運行發布

接下來,我將順著以上三個方面的思路來分別介紹,并展示我因此踩過的坑。

一、 py腳本如何運行?

  • 第一步當然是學習所有的語言都必備的:安裝環境,此處不再贅述,給大家一個我參考的博客,非常詳細。windows下python環境的安裝?
    包括了安裝環境到簡單的運行語句等內容。
  • 這樣的話,我在本地已經可以運行出已經寫好的py程序。
  • 注意:這是我踩的第一個坑,在配置python環境時,要注意你當前運行的py腳本的版本,因為2.7和3.0兩個版本的兼容不是很好,所以環境配置不相同時,可能會導致寫好的py腳本出現語法錯誤,所以要注意這一點,選擇相應版本的安裝包。
  • 二、java中如何調用py腳本?

    關于java中如何調用py腳本,網上一搜就有很多種方法,我主要實踐了其中兩種,當然最后采用的一種也是有原因的,下文會詳細解釋。

    1. 第一種,Jython?
    什么是jython??
    他其實是一門語言,并非是Java 或者Python的解釋器.用它可以實現,java和python代碼的互相訪問。?
    如何使用jython??
    如何使用Jython?
    所需jar包:?
    為什么最終沒有選擇使用jython??
    這是我踩過的第二個坑,上面引用的的jython教程,幾個例子都能很好的運行,函數傳參也非常方便,但在運行現有的demo.py時,卻一直在報下面這個錯:?
    ?
    查詢過后,發現是java項目中引包不全的問題,但是基于我對py的了解之少,我放棄了這個集成好的方法,畢竟需要一點對py的了解。這個等以后有時間再做研究。

    2.于是在放棄jython之后,我還是采用了java自帶的命令行執行py Runtime.getRuntime().exec(args),然后采用輸出流的方式用來獲取參數。?
    在封裝好的py腳本的情況下,如果你不需要傳入參數而只需要執行這個py文件的話,那么直接百度就可以獲取得到很多寫好的代碼,我這里提供一種我這次使用的:

    try {Process pr = Runtime.getRuntime().exec("python G:\\test.py");BufferedReader in = new BufferedReader(new InputStreamReader(pr.getInputStream())); String line; while ((line = in.readLine()) != null) { line = decodeUnicode(line); System.out.println(line); } in.close(); pr.waitFor(); System.out.println("end"); } catch (Exception e) { e.printStackTrace(); }

    然后看到這里,只需要修改Runtime.getRuntime().exec(“”)中的參數改為自己相應的文件路徑即可,就可以輕松結束本次分享,但是,總有但是,我們大多數情況下調用一個復用的部分,都是為了傳入不同的參數以獲取相應的結果,那么請繼續往下看。

    三、如何在java中向py腳本中動態傳參。

  • 首先,先來一起明確一個概念,向腳本中動態傳參,我一開始就很難理解,一個java的參數如何轉為py的參數呢?但是,腳本就是可以直接用命令行運行的,具體是什么意思呢?我也不太清楚,但是我在詢問不同人的不同方法之下,找到了一種自己能夠會用并且能夠理解的方法。具體參見:Python獲得命令行傳參
  • 那么一言不合上代碼吧:?
    Java代碼:
  • try {//需傳入的參數String a = getPara("car").substring(1), b = "D3455054", c = "LJ12GKS28D4418248", d = "qingdao"; System.out.println("start;;;" + a); //設置命令行傳入參數 String[] args = new String[] { "python", "/api_test.py", a, b, c, d }; Process pr = Runtime.getRuntime().exec(args); BufferedReader in = new BufferedReader(new InputStreamReader(pr.getInputStream())); String line; while ((line = in.readLine()) != null) { line = decodeUnicode(line); System.out.println(line); } in.close(); pr.waitFor(); System.out.println("end"); } catch (Exception e) { e.printStackTrace(); }

    py代碼:

    import sys print "腳本名:", sys.argv[0] for i in range(1, len(sys.argv)): print "參數", i, sys.argv[i]

    運行結果:?

    那么,醬紫就大功告成啦。你只需要根據py腳本中所需要的參數傳進去就好啦。

    運行發布

    運行發布有什么好說的呢??
    這里也有一點需要注意的,就是服務器環境的配置,linux一般都是集成好的,其他的我不太清楚,但是最重要的一點,在上線調試時,一定要注意py文件的路徑存放問題。就醬。

    總結

    從一開始的完全摸不到頭腦,到現在能夠調用成功,這不到一天的時間,壓力卻是很大的,面對未知的知識,無從下手的感覺我想大家也都經歷過,但在這里,我十分想感謝那些無私幫助我的旁友們~多交流一下,別人不一定有時間能幫你解決,但能夠提供思路的情況下,就能夠早一點找到正確的方向,比如”Python獲得命令行傳參“這個東西,我一開始真是連百度搜索什么都不知道,搜到的東西可能跟你需要的完全不搭邊,那么有一個方向也是好的。當然,這個方向完全正確,奠定了后面動態傳參能夠成功的基礎,哈哈。?
    這個博客只顯示了我的一個特點:我不生產博客,我只是博客的搬運工~

    附錄:遺留問題

    項目中獲取到的中文參數,一向py腳本中傳參就顯示亂碼,只有中文出現這個情況,到目前也沒有找到解決方法,那么現在采用了一種曲線救國的方式,但是非常的不好,然而目前并沒有發現更好的解決方法,放在這里待以后繼續研究,或者大家能有什么好方法也希望能夠多多交流~

    原文地址:https://blog.csdn.net/thorny_v/article/details/61417386

    轉載于:https://www.cnblogs.com/jingsupo/p/java-python.html

    總結

    以上是生活随笔為你收集整理的在Java中动态传参调用Python脚本的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 久久综合五月婷婷 | 国产熟妇另类久久久久 | 超碰人人爱人人 | 美国伊人网 | 黄色一级一片 | 岛国av电影在线观看 | 激情宗合 | 成人深夜视频在线观看 | 四虎av在线 | 亚洲精品影视 | 国产色秀 | 视频福利一区 | 色七七视频 | 日本55丰满熟妇厨房伦 | 毛片在线视频播放 | 91精品人妻一区二区三区蜜桃欧美 | 被黑人各种姿势猛c哭h文1 | 日本午夜小视频 | 屁屁影院一区二区三区 | 蜜桃传媒一区二区亚洲av | 总受合集lunjian双性h | 骚虎视频最新网址 | 天堂综合网 | 视频福利在线观看 | 日本猛少妇色xxxxx猛叫 | 96精品在线| 黄色一集片| 亚洲小视频在线播放 | 特极毛片 | 怡红院精品视频 | 日本午夜免费福利视频 | 国产香蕉一区 | 中文字幕视频在线观看 | 国产精品久久久久久 | 亚洲第一成人在线 | 福利姬在线观看 | 久久亚洲电影 | 绯色av蜜臀vs少妇 | 俺去操 | 天天干视频在线 | 在线播放中文字幕 | 国产粉嫩在线 | 国产一区二区在线视频观看 | 娇小萝被两个黑人用半米长 | 午夜免费网址 | 亚洲第一在线 | 国产一级爽片 | 久久曹| 人妖videosex高潮另类 | 欧美激情一区二区 | 午夜影院体验区 | 国产精品一区二区亚洲 | 亚洲av无一区二区三区怡春院 | 黄色com| 黄色小说视频网站 | 希岛婚前侵犯中文字幕在线 | 三级做爰在线观看视频 | 致单身男女免费观看完整版 | 日本在线免费观看视频 | 日韩中文三级 | 蜜桃av一区二区三区 | 91精品国产综合久久国产大片 | 国产影视一区二区三区 | 国产精品一区二区三区四区 | 亚洲综合色站 | 成人黄色一级片 | 99re99| 久久国产加勒比精品无码 | 男人天堂电影 | 怒海潜沙秦岭神树 | 亚洲a视频在线 | 亚洲天堂欧美 | 久久伊人一区二区 | 黄色资源网站 | 亚洲国产精品久久久久 | 黄色女女| 色呦呦网站入口 | 亚洲人人人 | 97福利网| 欧美经典一区 | 欧美在线观看一区 | 欧美做受高潮动漫 | 国语对白做受xxxxx在线中国 | 在线观看成人一区 | 丁香色欲久久久久久综合网 | 午夜啪啪网 | 久久久黄色片 | 黄色一级一片免费播放 | 久久超级碰碰 | 在线看片你懂的 | www.热久久| 亚洲人成无码网站久久99热国产 | 男女免费看| 在线黄色av网站 | 午夜视频网站 | 国产精品免费视频观看 | 午夜影院私人 | 午夜国产一区二区三区 | 亚洲最新av网站 |