1.why

python拥有的某些库要比Java强大,也拥有一些比Java更擅长的领域,python可以搭建后端让Java调用接口,但某些时候我们用到的python代码可能并不多也许只有一个算法,此时就需要以下方法了。

2.核心依赖

毫无疑问【自然是python的Java执行器了】

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

3.使用

3.1类型一【直接执行python代码】

public class ExecPythonCode {public static void main(String[] args) {PythonInterpreter interpreter = new PythonInterpreter();interpreter.exec("a=[5,2,3,9,4,0];");// 此处python语句是3.x版本的语法interpreter.exec("print(sorted(a));"); // 此处是python语句是2.x版本的语法interpreter.exec("print sorted(a);"); interpreter.close();}
}

3.2类型二【执行python文件后获取返回结果】

  1. 无参数的python文件执行
public class ExecPythonFile {public static void main(String[] args) {try {Process process = Runtime.getRuntime().exec("python D:\\PythonFile.py");BufferedReader in = new BufferedReader(new InputStreamReader(process.getInputStream()));String line = null;while ((line = in.readLine()) != null) {System.out.println(line);}in.close();process.waitFor();} catch (IOException e) {e.printStackTrace();} catch (InterruptedException e) {e.printStackTrace();}}
}
  1. 带参数的python文件执行
public class ExecPythonFileWithArgs {public static void main(String[] args) {int a = 18, b = 19;args = new String[] { "python","D:\\PythonFileWithArgs.py",String.valueOf(a), String.valueOf(b) };try {Process process = Runtime.getRuntime().exec(args);BufferedReader in = new BufferedReader(new InputStreamReader(process.getInputStream()));String line = null;while ((line = in.readLine()) != null) {System.out.println(line);}in.close();process.waitFor();} catch (IOException e) {e.printStackTrace();} catch (InterruptedException e) {e.printStackTrace();}}
}
  1. 【Windows环境】使用bat脚本执行python文件【我猜想也是有Linux环境的执行方法的】
public class ExecPythonBat {public static void main(String[] args) {try {Process process = Runtime.getRuntime().exec("cmd /c D:\\RunPythonFile.bat");BufferedReader in = new BufferedReader(new InputStreamReader(process.getInputStream()));String line = null;while ((line = in.readLine()) != null) {System.out.println(line);}in.close();process.waitFor();} catch (IOException e) {e.printStackTrace();} catch (InterruptedException e) {e.printStackTrace();}}
}

3.3类型三【读取python文件内的函数进行执行】

public class ExecPythonFileCode {public static void main(String[] args) {PythonInterpreter interpreter = new PythonInterpreter();interpreter.execfile("D:\\PythonFile.py");PyFunction function = interpreter.get("add", PyFunction.class);int a = 3, b = 12;PyObject pyObject = function.__call__(new PyInteger(a), new PyInteger(b));System.out.println("The result is : " + pyObject);interpreter.close();}
}

4.python文件和执行脚本

文件一:PythonFile.py

import numpy as np
a = np.arange(12).reshape(3,4)
print(a)
def add(a,b):return a+b;

文件二:PythonFileWithArgs.py

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]))

文件三:RunPythonFile.bat

@echo off
cmd /k python E:\Anaconda3_Python\PythonFile.py

【Java后台】Java执行Python代码的3类5种情况测试【Java源码+Python源码举例】相关推荐

  1. java调用、执行groovy代码

    java调用.执行groovy代码 1: package test; 2: 3: import javax.script.ScriptEngine; 4: import javax.script.Sc ...

  2. Java后台生成图表——主代码(折线图,饼状图,柱状图,-》并产出图片PDF或其他格式的图片内容)

    声明: 本文采用的数据均来源于网络,本人只用于学习记录,若有侵权,还望能及时联系. Maven 的 POM 依赖 <!--必要--><!--用于jfreechart生成图片 --&g ...

  3. Java脚本引擎执行js代码以及动态编译

    Java脚本引擎执行js代码 一.概述 JAVA脚本引擎是从JDK6.0之后添加的新功能. 使得 Java 应用程序可以通过一套固定的接口与各种脚本引擎交互,从 而达到在 Java 平台上调用各种脚本 ...

  4. java exe指的是什么,3.Java程序的执行过程中用到一套JDK工具,其中java.exe是指(5.0分)...

    3.Java程序的执行过程中用到一套JDK工具,其中java.exe是指(5.0分) 答:Java编译器 最早的有关学习迁移的一种代表性理论是( ) 答:形式训练说 能够通过母婴胎盘感染的寄生虫是( ...

  5. python代码的注释只有一种方式、那就是使用_尔雅学习通APP2020年细胞的奥秘答案查题公众号...

    [填空题]饱和水蒸气通过间壁加热空气,间壁温度接近于 的温度. [判断题]Python代码的注释只有一种方式,那就是使用 # . A. 正确 B. 错误 [单选题]胚胎最易受病毒感染而造成胎儿发育畸形 ...

  6. python代码的注释只有一种方式、那就是使用_[多选] 《建立世贸组织协定》附件4包括的诸边贸易协议有()....

    Python代码的注释只有一种方式,那就是使用#符号 [填空题]Some young people like pop music, while still others like music. 以能源 ...

  7. python代码的注释贿一种方式、那就是使用井符号号_Python 代码的注释只有一种方式,那就是使用 # 符号。 (2.0分)_学小易找答案...

    [判断题]Python 变量名区分大小写,所以 student 和 Student 不是同一个变量. (2.0分) [判断题]在 Python 中可以使用 for 作为变量名. (2.0分) [填空题 ...

  8. python运行时很卡-Python代码运行速度慢?这五种方法很管用

    对于Python很多人还是比较了解的,虽然说Python有很多优势但同样具有劣势,Python最大的劣势就是运行效率慢,那么如何提高Python代码运行速度呢?这五种方法很管用. 1.PyPy:在选择 ...

  9. No.002 关于Python函数返回值的三种情况

    关于Python函数返回值的三种情况,无返回值.有1个返回值,以及有多个返回值 # 本批次所有文章都是跟着马士兵的杨淑娟老师的视频教学所得,视频地址在下面: # https://www.bilibil ...

最新文章

  1. centos删除php_centos如何卸载php
  2. 10分钟带你学会微信小程序的反编译
  3. python 散点图 不同颜色_python – pandas – 每个点都有不同颜色图例的散点图
  4. phpdesigner8 php7.0,大家千万别用PHPDesigner8 的项目替换,多说是泪,改整个站点中!
  5. LintCode刷题笔记-- BackpackIII
  6. 我的世界服务器怎么修改矿物,我的世界怎么设置自定义矿物
  7. 【文本匹配】cqrctr:文本匹配的破城长矛
  8. 【数学期刊】世界著名数学期刊
  9. Windows下usb接口驱动技术(一)
  10. 移动MM要走进大学!
  11. 怎么将视频转化为gif动画?视频如何生成gif格式图片?
  12. xp进入win7计算机要密码怎么设置密码,XP系统设置直接跳过密码的多种方法
  13. Banana PI (香蕉派) 安装 ubuntu-core-14 最小核心的操作步骤
  14. HTML中来访时间,html记录用户的访问次数代码
  15. 考研英语 - word-list-12
  16. 计算机不能上网查找原因的步骤,电脑不能上网的原因及操作步骤_电脑突然不能上网...
  17. HTML标题与段落:网络文章网页
  18. 【数据挖掘】关联规则挖掘
  19. 推荐系统学习(一)——推荐引擎初探
  20. Nginx服务模块开发

热门文章

  1. Firefox火狐浏览器自用技巧汇总--以备使用--13.5.16
  2. 关于JS在IE和FF下attachEvent,addEventListener学习笔记
  3. mysql运用与实践_MySQL开发与实践 PDF 下载
  4. linux的write是线程安全的吗,socket的write/send还是是否是线程安全?
  5. mysql合并表快速去重_MySQL数据表合并去重的简单实现方法
  6. 转子接地保护原理_发电机转子一点接地保护的研究
  7. radiant序列码_阅“码”无数|第一期
  8. python语言格式化输出_Python字符串格式化输出
  9. 当double类型数学计算精度偏差解决
  10. 微型计算机最早提出于,计算机基础题1、世界上第一台电子计算机诞生于A)1943年B-查字典问答网...