一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - 詳解如何在Java中調用Python程序

詳解如何在Java中調用Python程序

2021-09-14 10:50湖北張凡 Java教程

今天給大家帶來的是關于Java中調用Python程序的相關知識,文章有非常詳細的代碼示例,需要的朋友可以參考下

Java中調用Python程序

1.新建一個Maven工程,導入如下依賴

?
1
2
3
4
5
<dependency>
    <groupId>org.python</groupId>
    <artifactId>jython-standalone</artifactId>
    <version>2.7.0</version>
</dependency>

2.在java中直接執行python代碼片段

?
1
2
3
4
5
6
7
8
9
10
11
import org.python.util.PythonInterpreter;
 
public class InvokePython {
 
    public static void main(String[] args) {
        PythonInterpreter pythonInterpreter = new PythonInterpreter();
        pythonInterpreter.exec("a='aaa'");
        pythonInterpreter.exec("print(a)");
//        pythonInterpreter.exec("import pandas as pd");
    }
}

通過上面這種方式執行python代碼片段,實際上是通過Jpython來實現的,這種方式能執行的python代碼片段比較有限,都是一些最原始的python命令,很多包不能用,例如執行pythonInterpreter.exec("import pandas as pd"); 都會報錯。所以這種方式一般不推薦

3.通過PythonInterpreter類中的execfile()方法來執行一個python腳本文件。

?
1
2
3
4
5
6
7
8
9
import org.python.util.PythonInterpreter;
 
public class InvokePython {
 
    public static void main(String[] args) {
        PythonInterpreter pythonInterpreter = new PythonInterpreter();
        pythonInterpreter.execfile("F:\\大學\\大三\\大三下\\工程創新和企業開發\\大作業\\圖靈API.py");
    }
}

這種方式和上面的那種方式的本質是一樣的,能執行的命令也是很原始的,一般不推薦。

4.通過Runtime.getRuntime().exec()方法來執行python腳本

原python腳本

?
1
2
3
4
5
6
7
8
9
10
11
12
13
import requests
import json
import sys
 
def chat_by_Turing(question):
    url = "http://www.tuling123.com/openapi/api?key=49de46c409c047d19b2ed2285e8775a6&info="
    response = requests.get(url+question)
    result = json.loads(response.text)
    answer = result['text']
    print("小安:",answer)
 
question = sys.argv[1] ##這個是用來接收外部傳進來的參數
chat_by_Turing(question)

Runtime.getRuntime().exec()調用

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Scanner;
 
public class RuntimeFunction {
    public static void main(String[] args) {
        Process proc;
        String compiler = "E:\\Anaconda\\Anaconda_install\\python.exe";
//        String program = "F:\\大學\\大三\\大三下\\工程創新和企業開發\\大作業\\圖靈API.py";
        String rootPath = "F:\\大學\\大三\\大三下\\機器學習\\課設\\Python\\src\\main\\resources\\";
        String program = "圖靈API.py";
        try {
            Scanner in = new Scanner(System.in);
            System.out.print("我:");
            String question = in.nextLine();
            String commond = compiler+" "+rootPath+program+" "+question;
            proc = Runtime.getRuntime().exec(commond);
            BufferedReader reader = new BufferedReader(new InputStreamReader(proc.getInputStream(),"GBK"));
            String line = null;
            while ((line = reader.readLine()) != null) {
                System.out.println(line);
            }
            in.close();
            proc.waitFor();
 
        } catch (IOException e) {
            e.printStackTrace();
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }
}

Runtime.getRuntime().exec()需要傳入一個字符串類型的參數command ,完整語句Runtime.getRuntime().exec(command)。這條語句是通過自己電腦上的cmd來執行的python程序文件的,因此command的構成如下:
python解釋器+" “+python程序文件的絕對路徑+” "+需要給python程序文件傳入的參數
注意command中的空格比不可少,python腳本里面需要通過sys.argv來接收參數的

通過這種方式來執行python程序,完全取決于你前面使用的python編譯器,編譯器環境里面有的,就一定能夠通過這種方式調用。這種方式比較強大,推薦使用這種方式來執行python程序。

參考鏈接

到此這篇關于詳解如何在Java中調用Python程序的文章就介紹到這了,更多相關Java中調用Python程序內容請搜索服務器之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持服務器之家!

原文鏈接:https://blog.csdn.net/m0_48302179/article/details/117903351

延伸 · 閱讀

精彩推薦
  • Java教程小米推送Java代碼

    小米推送Java代碼

    今天小編就為大家分享一篇關于小米推送Java代碼,小編覺得內容挺不錯的,現在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧...

    富貴穩中求8032021-07-12
  • Java教程Java8中Stream使用的一個注意事項

    Java8中Stream使用的一個注意事項

    最近在工作中發現了對于集合操作轉換的神器,java8新特性 stream,但在使用中遇到了一個非常重要的注意點,所以這篇文章主要給大家介紹了關于Java8中S...

    阿杜7472021-02-04
  • Java教程20個非常實用的Java程序代碼片段

    20個非常實用的Java程序代碼片段

    這篇文章主要為大家分享了20個非常實用的Java程序片段,對java開發項目有所幫助,感興趣的小伙伴們可以參考一下 ...

    lijiao5352020-04-06
  • Java教程升級IDEA后Lombok不能使用的解決方法

    升級IDEA后Lombok不能使用的解決方法

    最近看到提示IDEA提示升級,尋思已經有好久沒有升過級了。升級完畢重啟之后,突然發現好多錯誤,本文就來介紹一下如何解決,感興趣的可以了解一下...

    程序猿DD9332021-10-08
  • Java教程Java BufferWriter寫文件寫不進去或缺失數據的解決

    Java BufferWriter寫文件寫不進去或缺失數據的解決

    這篇文章主要介紹了Java BufferWriter寫文件寫不進去或缺失數據的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望...

    spcoder14552021-10-18
  • Java教程xml與Java對象的轉換詳解

    xml與Java對象的轉換詳解

    這篇文章主要介紹了xml與Java對象的轉換詳解的相關資料,需要的朋友可以參考下...

    Java教程網2942020-09-17
  • Java教程Java使用SAX解析xml的示例

    Java使用SAX解析xml的示例

    這篇文章主要介紹了Java使用SAX解析xml的示例,幫助大家更好的理解和學習使用Java,感興趣的朋友可以了解下...

    大行者10067412021-08-30
  • Java教程Java實現搶紅包功能

    Java實現搶紅包功能

    這篇文章主要為大家詳細介紹了Java實現搶紅包功能,采用多線程模擬多人同時搶紅包,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙...

    littleschemer13532021-05-16
主站蜘蛛池模板: 午夜精品在线 | 全肉一女n男np高h双龙养成 | 精品亚洲视频在线 | 99 久久99久久精品免观看 | 我把校花黑色蕾丝胸罩脱了 | 精品91自产拍在线观看99re | 美女流白浆| 精品国产日韩亚洲一区在线 | 国产99精品 | 男人猛进猛出女人下面视频 | 精品一卡2卡3卡4卡5卡亚洲 | 精精国产www视频在线观看免费 | 国产欧美视频在线观看 | 大学生初次破苞免费视频 | 欧美最猛性xxxxx动态图 | 亚洲欧洲色图 | 91精品乱码一区二区三区 | 亚洲AV久久无码精品九号 | 男人和女人全黄一级毛片 | 日本成人高清视频 | 国产精品视频一区二区三区不卡 | 亚洲日韩中文字幕一区 | 99国产情在线视频 | 把美女屁股眼扒开图片 | 亚洲10p| julia ann黑人巨大 | 精品视频在线免费播放 | xxx美国| 亚洲国产精品第一页 | 欧洲美女啪啪 | 干操网 | 视频大全在线观看免费 | 99久久99热久久精品免 | 红楼影视h38bar在线线播放 | 亚洲性视频在线观看 | 美女张开大腿让男人桶 | 亚洲日韩欧美一区二区在线 | 女人麻豆国产香蕉久久精品 | 公妇乱淫在线播放免费观看 | 青青草原国产 | 美女乳液|