最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

在java中調(diào)用python腳本的三種方法

 更新時間:2023年09月20日 10:47:16   作者:努力提升的碼農(nóng)  
實際工程項目中可能會用到Java和python兩種語言結(jié)合進行,這樣就會涉及到一個問題,就是怎么用Java程序來調(diào)用已經(jīng)寫好的python腳本呢,這篇文章主要給大家介紹了關于在java中調(diào)用python腳本的三種方法,需要的朋友可以參考下

前言

推薦使用第三種方法,因為只有第三種方法使用Runtime.getRuntime()才能執(zhí)行含有第三方庫(numpy,matlab,pandas等庫)的python腳本。

方法一:在java程序中執(zhí)行Python語句

1.首先在maven中添加依賴

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

2.使用Jpython中的PythonInterpreter執(zhí)行Python語句

public class Tool{
    public static void main(String [] args){
        PythonInterpreter interpreter = new PythonInterpreter();
		interpreter.exec("print("This is a JPython text")");
        interpreter.exec("print(2+3)");
    }
}

方法二:java執(zhí)行python腳本(不支持第三方庫)

1.首先在maven中添加依賴(也是依賴Jpython包)

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

2.創(chuàng)建一個Python腳本

#當我們的Python腳本中有漢字的時候,需要在腳本的第一行寫coding = utf-8 來告訴編譯器編碼方式是什么
# -*- coding: UTF-8 -*-
a = 'This is a test'
print(a)

3.在java中執(zhí)行python腳本

public class Tool{
    public static void main(String [] args){
        PythonInterpreter interpreter = new PythonInterpreter();
		interpreter.execfile("./text.py");//放腳本的位置
		interpreter.cleanup();
		interpreter.close();
    }
}

方法三:使用Runtime.getRuntime()執(zhí)行Python腳本

1.不需要傳遞參數(shù)的例子

先創(chuàng)建一個簡單的調(diào)用第三方庫的Python腳本

import numpy as np
a = np.arange(10)
print(a)

然后使用 Runtime.getRuntime() 方法執(zhí)行python腳本

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Tool {
    public static void main(String[] args) {
        try {
            Process proc = Runtime.getRuntime().exec("test.py");//執(zhí)行腳本
            //用輸入輸出流來截取結(jié)果
            BufferedReader reader = new BufferedReader(new InputStreamReader(proc.getInputStream()));
            String line = null;
            while((line = reader.readLine()) != null){
                System.out.println(line);
            }
            reader.close();
            proc.waitFor();
        } catch (IOException e) {
             throw new RuntimeException(e);
        } catch (InterruptedException e) {
             throw new RuntimeException(e);
        } 
    }
}

2.需要傳遞參數(shù)的例子

import sys
def sum(a, b, c):
	return a+b+c
if __name__ == "__main__":	
	a=(int(sys.argv[1]))
	b=(int(sys.argv[2]))
	c=(int(sys.argv[3]))
	s=sum(a,b,c)
	print("finish!!!")
	print(s)

sys.argv用于獲取參數(shù)url1,url2,乃至更多,sys.argv[0]代表python程序名

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Scanner;
public class Tool {
    public static void main(String [] args) {
        Scanner scanner = new Scanner(System.in);
        int a = scanner.nextInt();
		int b = scanner.nextInt();
		int c = scanner.nextInt();
        try {
            String[] my_args =new String[] {"python","test.py",String.valueOf(a),String.valueOf(b),String.valueOf(c)};
            Process proc =  Runtime.getRuntime().exec(my_args);//執(zhí)行腳本
            BufferedReader reader = new BufferedReader(new InputStreamReader(proc.getInputStream()));
            String line = null;
            while((line = reader.readLine()) != null){
                System.out.println(line);
            }
            reader.close();
            proc.waitFor();
        } catch (IOException e) {
            throw new RuntimeException(e);
        } catch (InterruptedException e) {
            throw new RuntimeException(e);
        }
    }
}

my_args數(shù)組里面存放的參數(shù){“python”,“test.py”,String.valueOf(a),String.valueOf(b),String.valueOf©},第一個是固定的就寫’python‘,第二個是我們要執(zhí)行的python腳本的位置(注意路徑),后面的是我們要傳遞的參數(shù)也就是url1,url2等等(和Python腳本所接收的內(nèi)容互相對應)

這種方式我們需要使用輸入流輸出流BufferedReader來截取結(jié)果

總結(jié) 

到此這篇關于在java中調(diào)用python腳本的三種方法的文章就介紹到這了,更多相關java調(diào)用python腳本內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • SpringBoot?整合mybatis+mybatis-plus的詳細步驟

    SpringBoot?整合mybatis+mybatis-plus的詳細步驟

    這篇文章主要介紹了SpringBoot?整合mybatis+mybatis-plus的步驟,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-06-06
  • 從Spring源碼解析事務失效的原因

    從Spring源碼解析事務失效的原因

    今天帶大家學習Spring的相關知識,文章圍繞著Spring事務失效的原因等相關知識展開,文中有非常詳細的介紹及圖文示例,需要的朋友可以參考下
    2021-06-06
  • 20秒教你學會java?List函數(shù)排序操作示例

    20秒教你學會java?List函數(shù)排序操作示例

    這篇文章主要為大家介紹了20秒教你學會List函數(shù)排序操作示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-09-09
  • Hutool?Java工具類庫_ExcelUtil的使用

    Hutool?Java工具類庫_ExcelUtil的使用

    這篇文章主要介紹了Hutool?Java工具類庫_ExcelUtil的使用,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • Java中創(chuàng)建對象的5種方式總結(jié)

    Java中創(chuàng)建對象的5種方式總結(jié)

    本篇文章主要介紹了Java中創(chuàng)建對象的5種方式總結(jié),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-02-02
  • Java設計模式常用原則解析

    Java設計模式常用原則解析

    這篇文章主要介紹了Java設計模式常用原則解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-05-05
  • 自定義log4j.properties的加載位置方式

    自定義log4j.properties的加載位置方式

    這篇文章主要介紹了自定義log4j.properties的加載位置方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • 淺談java日志格式化

    淺談java日志格式化

    不管我們使用何種語言開發(fā),一旦程序發(fā)生異常,日志是一個很重要的數(shù)據(jù)。但是并不是意味著打印的日志越多越好,我們需要的是有用的日志。下面小編來和大家一起學習以下知識
    2019-05-05
  • SpringCloud Stream消息驅(qū)動實例詳解

    SpringCloud Stream消息驅(qū)動實例詳解

    這篇文章主要介紹了SpringCloud Stream消息驅(qū)動的相關知識,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-03-03
  • SpringBoot熱部署Springloaded實現(xiàn)過程解析

    SpringBoot熱部署Springloaded實現(xiàn)過程解析

    這篇文章主要介紹了SpringBoot熱部署Springloaded實現(xiàn)過程解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-03-03

最新評論

县级市| 黄石市| 西平县| 沂源县| 太康县| 定远县| 青岛市| 松滋市| 呼玛县| 大理市| 社旗县| 拜城县| 泉州市| 泰顺县| 元朗区| 当阳市| 吉木萨尔县| 西平县| 韩城市| 专栏| 鹤峰县| 黑龙江省| 柳州市| 海盐县| 繁昌县| 民勤县| 山东| 准格尔旗| 静宁县| 珠海市| 华阴市| 丰都县| 甘洛县| 宜阳县| 丹阳市| 鸡泽县| 鹿泉市| 靖江市| 乾安县| 永年县| 普定县|