国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Java調(diào)用python代碼的五種方式

這篇具有很好參考價值的文章主要介紹了Java調(diào)用python代碼的五種方式。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

你還在糾結怎么樣在Java中調(diào)用python嗎?我們在實際工程項目問題中,經(jīng)常會碰到不同語言代碼之間互調(diào)的問題,比如此處的Java調(diào)用python(常見Java調(diào)用python寫的處理模型來完成數(shù)據(jù)處理等)。


讓我們來看看具體怎么操作吧!

1. 無參數(shù)調(diào)用

說明: Java調(diào)用不帶參數(shù)的python代碼執(zhí)行
樣例代碼如下:

try {
	String exe = "python解釋器所處的絕對路徑";
	String py = "python代碼文件絕對地址";
	Process process = Runtime.getRuntime().exec(exe + " " + py);
	//獲取結果的同時設置輸入流編碼格式"gb2312"
	InputStreamReader isr = new InputStreamReader(process.getInputStream(),"gb2312");
	LineNumberReader input = new LineNumberReader(isr);
	String result = "";
	result = input.readLine();
	System.out.println(result);
	input.close();
	isr.close();
	process.waitFor();
} catch (InterruptedException | IOException e) {
	System.out.println("調(diào)用python腳本并讀取結果時出錯:" + e.getMessage());
}

2. 帶參數(shù)調(diào)用

帶參調(diào)用可以將命令和參數(shù)寫入String數(shù)組,然后作為執(zhí)行參數(shù)執(zhí)行。
基本語句如下:

String exe = "python解釋器所處的絕對路徑";
String py = "python代碼文件絕對地址";
String pram = "單個傳遞參數(shù),若參數(shù)為基本類型,轉化為String;若為數(shù)組等類型,也是將其轉換為String型";
String [] args = new String[] {exe, py, pram...};
Process process = Runtime.getRuntime().exec(args);

2.1. 單行返回值

說明: Java調(diào)用不帶參數(shù)的python代碼執(zhí)行
樣例代碼如下:

try {
	String exe = "python解釋器所處的絕對路徑";
	String py = "python代碼文件絕對地址";
	String pram = "單個傳遞參數(shù),若參數(shù)為基本類型,轉化為String;若為數(shù)組等類型,也是將其轉換為String型";
	String [] args = new String[] {exe, py, pram...};
	Process process = Runtime.getRuntime().exec(args);
	//獲取結果的同時設置輸入流編碼格式"gb2312"
	InputStreamReader isr = new InputStreamReader(process.getInputStream(),"gb2312");
	LineNumberReader input = new LineNumberReader(isr);
	String result = "";
	result = input.readLine();
	System.out.println(result);
	input.close();
	isr.close();
	process.waitFor();
} catch (InterruptedException | IOException e) {
	System.out.println("調(diào)用python腳本并讀取結果時出錯:" + e.getMessage());
}

2.2. 多行返回值

說明: Java調(diào)用不帶參數(shù)的python代碼執(zhí)行
樣例代碼如下:

try {
	String exe = "python解釋器所處的絕對路徑";
	String py = "python代碼文件絕對地址";
	String pram = "單個傳遞參數(shù),若參數(shù)為基本類型,轉化為String;若為數(shù)組等類型,也是將其轉換為String型";
	String [] args = new String[] {exe, py, pram...};
	ProcessBuilder builder = new ProcessBuilder(args);
    Process process = builder.start();
    BufferedReader success = new BufferedReader(new InputStreamReader(process.getInputStream(), "GB2312"));//獲取字符輸入流對象
    BufferedReader error = new BufferedReader(new InputStreamReader(process.getErrorStream(), "GB2312"));//獲取錯誤信息的字符輸入流對象
    String line = null;
    List<String> success_result = new ArrayList<>();
    List<String> error_result = new ArrayList<>();
    //記錄輸出結果
    while ((line = success.readLine()) != null) {
        success_result.add(line);
    }
    //記錄錯誤信息
    while ((line = error.readLine()) != null) {
        error_result.add(line);
    }
    success.close();
    error.close();
    process.waitFor();

    System.out.println(success_result);
    System.out.println(error_result);
} catch (InterruptedException | IOException e) {
	System.out.println("調(diào)用python腳本并讀取結果時出錯:" + e.getMessage());
}

3. Java中直接執(zhí)行python語句

注意: 此方法在使用之前需要導入依賴環(huán)境,如在maven中導入如下依賴:

<dependency>
    <groupId>org.python</groupId>
    <artifactId>jython-standalone</artifactId>
    <!--python版本在這里指定(2.x或3.x等)-->
    <version>3.7.0</version>	
</dependency>

調(diào)用語句如下:

import org.python.util.PythonInterpreter
public class JavaRunPython {
    public static void main(String[] args) {
    	//調(diào)用python的解釋器
        PythonInterpreter interpreter = new PythonInterpreter();
        //執(zhí)行Python語句
        interpreter.exec("str = 'hello world!'; ");
        interpreter.exec("print(str);");
    }
}

4. 通過PythonInterpreter直接調(diào)用python腳本

注意: 此方法也需要導入1.3中依賴
Java調(diào)用代碼如下:

import org.python.util.PythonInterpreter;
public class JavaPythonFile {
    public static void main(String[] args) {
        PythonInterpreter interpreter = new PythonInterpreter();
        //我在這里使用相對路徑,注意區(qū)分
        interpreter.execfile("D:/code/test.py");
    }
}

test.py舉例如下:

a = 1
b = 2
print(a +)

5. Java通過調(diào)用bat文件間接調(diào)用python

hello.bat測試代碼如下:

echo hello world!
D:
cd D:\code\
start python test.py
pause

Java調(diào)用代碼如下:

try {
	StringBuilder sb = new StringBuilder();
	String batPath = "D:/hello.bat";
	Process process = Runtime.getRuntime().exec(batPath);
	InputStream in = process.getInputStream();
	BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(in));
	String line;
	while ((line = bufferedReader.readLine()) != null) {
		sb.append(line + "\n");
	}
	in.close();
	try {
		process.waitFor();
	} catch (InterruptedException e) {
		System.out.println(e);
	}
} catch (IOException e) {
	System.out.println(e);
}

如果大家有好的方法,歡迎交流評論!文章來源地址http://www.zghlxwxcb.cn/news/detail-488245.html

到了這里,關于Java調(diào)用python代碼的五種方式的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內(nèi)容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • Java VS Go 還在糾結怎么選嗎,(資深后端4000字帶你深度對比)

    Java VS Go 還在糾結怎么選嗎,(資深后端4000字帶你深度對比)

    今天我們來聊一下Go 和Java,本篇文章主要是想給對后臺開發(fā)的初學者和有意向選擇Go語言的有經(jīng)驗的程序員一些建議,希望能幫助各位自上而下的來了解一下Java和Go的全貌。 作為一個多年的Java后端開發(fā),用的時間久了就會發(fā)現(xiàn)Java語言一些問題,所謂婚前風花雪月,婚后柴米

    2024年02月04日
    瀏覽(26)
  • Java單例模式的五種實現(xiàn)方式 懶漢式 餓漢式 雙重校驗鎖 靜態(tài)變量 靜態(tài)內(nèi)部類 枚舉實現(xiàn)單例模式等

    Java單例模式是一種設計模式,用于確保一個類只有一個實例,并提供全局訪問點以獲取該實例。它通常用于需要共享資源或控制某些共享狀態(tài)的情況下。 懶漢式:在類加載的時候就創(chuàng)建對象,要再調(diào)用方法時才創(chuàng)建對象,減少內(nèi)存開銷。 餓漢式:再類加載的時候就實例化對

    2024年04月27日
    瀏覽(31)
  • 多線程的五種“打開”方式

    多線程的五種“打開”方式

    線程(Thread)是計算機科學中的一個基本概念,它是進程(Process)中的一個執(zhí)行單元,負責執(zhí)行程序的指令序列。 線程是操作系統(tǒng)能夠進行調(diào)度和執(zhí)行的最小單位。 在多任務操作系統(tǒng)中,多個線程可以在同一個進程內(nèi)并發(fā)執(zhí)行,共享進程的資源。 { 假設你正在廚房中準備晚

    2024年02月10日
    瀏覽(23)
  • PHP的五種運行方式

    PHP的五種運行方式: 1、命令行方式:通過在 命令行終端中輸入 php 命令 ,可以執(zhí)行PHP腳本文件。這種方式常用于執(zhí)行獨立的PHP腳本,比如執(zhí)行一些批處理任務、定時任務等。 優(yōu)點:靈活方便,可用于執(zhí)行獨立的PHP腳本,適合批處理任務和定時任務。 缺點:需要手動在命令

    2024年02月05日
    瀏覽(28)
  • List集合的五種遍歷方式

    目錄 一、List五種遍歷方式 ?1、普通for遍歷 2、 增強for遍歷 ?3、Lambda表達式 ?4、迭代器遍歷 ?5、列表迭代器 方法 說明 迭代器遍歷 在遍歷的過程中需要刪除元素,請使用迭代器。 列表迭代器 在遍歷的過程中需要添加元素,請使用列表迭代器。 增強for遍歷 僅僅想遍歷,那

    2024年02月10日
    瀏覽(27)
  • 微前端:qiankun的五種通信方式

    微前端:qiankun的五種通信方式

    今天盤點一下 qiankun 父子應用的通信方式都有哪些,我發(fā)現(xiàn)了 5 種。 1、localStorage/sessionStorage 2、通過路由參數(shù)共享 3、官方提供的 props 4、官方提供的 actions 5、使用vuex或redux管理狀態(tài),通過shared分享 接下來我們一個一個進行說明 有人說這個方案必須主應用和子應用是同一個

    2024年03月21日
    瀏覽(27)
  • springboot實現(xiàn)跨域的五種方式

    springboot實現(xiàn)跨域的五種方式

    出于瀏覽器的同源策略限制。同源策略(Sameoriginpolicy)是一種約定,它是瀏覽器最核心也最基本的安全功能,如果缺少了同源策略,則瀏覽器的正常功能可能都會受到影響。可以說Web是構建在同源策略基礎之上的,瀏覽器只是針對同源策略的一種實現(xiàn)。 同源策略 同源策略會

    2024年02月05日
    瀏覽(25)
  • 微信小程序傳參的五種方式

    微信小程序傳參的五種方式

    大家好,今天和大家分享一下微信小程序頁面之間傳參的五種方式,這個的話也是有人問了我一嘴,然后現(xiàn)在我和大家分享一下。 使用GPT搜索的話給我的答案是純文字的描述,但是大致就是這樣: URL參數(shù)傳遞:可以將參數(shù)直接拼接在頁面的URL中,在打開目標頁面時,通過獲

    2024年02月06日
    瀏覽(25)
  • Vue路由跳轉的五種方式

    Vue路由跳轉的五種方式

    路由跳轉有兩種形式:聲明式導航、編程式導航 1. router-link 聲明式 prop= :to=“…” 相當與 router.push(…) router-link中鏈接如果是’ / \\\'開始,就是從根路由開始 如果開始不帶 ’ / \\\',則是從當前路由開始 例子 2. this.$router.push() 可追溯 編程式 router.push(…)//該方法的參數(shù)可以是一個

    2024年02月05日
    瀏覽(40)
  • 【SpringBoot】 啟動后執(zhí)行方法的五種方式

    在 SpringBoot 工程 啟動后, 執(zhí)行方法的五種方式: 1、實現(xiàn) CommandLineRunner 接口 項目初始化完畢后,才會調(diào)用方法,提供服務 2、實現(xiàn) ApplicationRunner 接口 同 CommandLineRunner。只是傳參格式不一樣。CommandLineRunner:沒有任何限制;ApplicationRunner:key-value 3、實現(xiàn) ApplicationListener 接口

    2023年04月08日
    瀏覽(24)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包