【Java后台】Java执行Python代码的3类5种情况测试【Java源码+Python源码举例】
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文件后获取返回结果】
- 无参数的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();}}
}
- 带参数的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();}}
}
- 【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源码举例】相关推荐
- java调用、执行groovy代码
java调用.执行groovy代码 1: package test; 2: 3: import javax.script.ScriptEngine; 4: import javax.script.Sc ...
- Java后台生成图表——主代码(折线图,饼状图,柱状图,-》并产出图片PDF或其他格式的图片内容)
声明: 本文采用的数据均来源于网络,本人只用于学习记录,若有侵权,还望能及时联系. Maven 的 POM 依赖 <!--必要--><!--用于jfreechart生成图片 --&g ...
- Java脚本引擎执行js代码以及动态编译
Java脚本引擎执行js代码 一.概述 JAVA脚本引擎是从JDK6.0之后添加的新功能. 使得 Java 应用程序可以通过一套固定的接口与各种脚本引擎交互,从 而达到在 Java 平台上调用各种脚本 ...
- java exe指的是什么,3.Java程序的执行过程中用到一套JDK工具,其中java.exe是指(5.0分)...
3.Java程序的执行过程中用到一套JDK工具,其中java.exe是指(5.0分) 答:Java编译器 最早的有关学习迁移的一种代表性理论是( ) 答:形式训练说 能够通过母婴胎盘感染的寄生虫是( ...
- python代码的注释只有一种方式、那就是使用_尔雅学习通APP2020年细胞的奥秘答案查题公众号...
[填空题]饱和水蒸气通过间壁加热空气,间壁温度接近于 的温度. [判断题]Python代码的注释只有一种方式,那就是使用 # . A. 正确 B. 错误 [单选题]胚胎最易受病毒感染而造成胎儿发育畸形 ...
- python代码的注释只有一种方式、那就是使用_[多选] 《建立世贸组织协定》附件4包括的诸边贸易协议有()....
Python代码的注释只有一种方式,那就是使用#符号 [填空题]Some young people like pop music, while still others like music. 以能源 ...
- python代码的注释贿一种方式、那就是使用井符号号_Python 代码的注释只有一种方式,那就是使用 # 符号。 (2.0分)_学小易找答案...
[判断题]Python 变量名区分大小写,所以 student 和 Student 不是同一个变量. (2.0分) [判断题]在 Python 中可以使用 for 作为变量名. (2.0分) [填空题 ...
- python运行时很卡-Python代码运行速度慢?这五种方法很管用
对于Python很多人还是比较了解的,虽然说Python有很多优势但同样具有劣势,Python最大的劣势就是运行效率慢,那么如何提高Python代码运行速度呢?这五种方法很管用. 1.PyPy:在选择 ...
- No.002 关于Python函数返回值的三种情况
关于Python函数返回值的三种情况,无返回值.有1个返回值,以及有多个返回值 # 本批次所有文章都是跟着马士兵的杨淑娟老师的视频教学所得,视频地址在下面: # https://www.bilibil ...
最新文章
- centos删除php_centos如何卸载php
- 10分钟带你学会微信小程序的反编译
- python 散点图 不同颜色_python – pandas – 每个点都有不同颜色图例的散点图
- phpdesigner8 php7.0,大家千万别用PHPDesigner8 的项目替换,多说是泪,改整个站点中!
- LintCode刷题笔记-- BackpackIII
- 我的世界服务器怎么修改矿物,我的世界怎么设置自定义矿物
- 【文本匹配】cqrctr:文本匹配的破城长矛
- 【数学期刊】世界著名数学期刊
- Windows下usb接口驱动技术(一)
- 移动MM要走进大学!
- 怎么将视频转化为gif动画?视频如何生成gif格式图片?
- xp进入win7计算机要密码怎么设置密码,XP系统设置直接跳过密码的多种方法
- Banana PI (香蕉派) 安装 ubuntu-core-14 最小核心的操作步骤
- HTML中来访时间,html记录用户的访问次数代码
- 考研英语 - word-list-12
- 计算机不能上网查找原因的步骤,电脑不能上网的原因及操作步骤_电脑突然不能上网...
- HTML标题与段落:网络文章网页
- 【数据挖掘】关联规则挖掘
- 推荐系统学习(一)——推荐引擎初探
- Nginx服务模块开发
热门文章
- Firefox火狐浏览器自用技巧汇总--以备使用--13.5.16
- 关于JS在IE和FF下attachEvent,addEventListener学习笔记
- mysql运用与实践_MySQL开发与实践 PDF 下载
- linux的write是线程安全的吗,socket的write/send还是是否是线程安全?
- mysql合并表快速去重_MySQL数据表合并去重的简单实现方法
- 转子接地保护原理_发电机转子一点接地保护的研究
- radiant序列码_阅“码”无数|第一期
- python语言格式化输出_Python字符串格式化输出
- 当double类型数学计算精度偏差解决
- 微型计算机最早提出于,计算机基础题1、世界上第一台电子计算机诞生于A)1943年B-查字典问答网...