JavaWeb调用python脚本(可传参)
以下是个人在使用SSM 调用python脚本时遇到的问题及注意点,该案例可以下tomcat Web中访问调用python脚本。
public class DemoController{/**getPythonDemo2 中参数pyPath, args1, args2 可通过前端(AJAX)传过来 注意:(1)参数pyPath ,python脚本路径最好使用绝对路径,如果python(.py)脚本中也有文件路径读取,同样推荐使用绝对路径(2)该案例中,python脚本接受的参数 args1, args2是String类型,务必确认python脚本中使用的参数类型是否是String类型,根据需要进行相应的类型转换*//*** 调用python* 参数pyPath, args1, args2 可通过前端(AJAX)传过来*/@ResponseBody@RequestMapping(value="/getPythonDemo.ajax") public int getPythonDemo2(String pyPath, String args1, String args2){DemoController demo = new DemoController (); //实例化类System.out.println("pyPath= "+pyPath);System.out.println("args1= "+args1);System.out.println("args2= "+args2);int res =demo.getPythonDemo(pyPath, args1, args2); //调用python的方法return res;}/*** 调用python脚本 该方法支持python中的第三方库* @param pyPath python脚本路径* @param args1 参数1* @param args2 参数2*/public String getPythonDemo(String pyPath, String args1, String args2){Process proc;String line = null;List<String> lines = new ArrayList<String>();try {String[] args1 = new String[] { "python"// ,"/usr/local/tomcat/webapps/demo_console/WEB-INF/model/demo.py" linux绝对路径 //,"D:\\tomcat\\webapps\\wtpwebapps\\demo_console\\WEB-INF\\model\\demo.py" windows绝对路径 ,pyPath,String.valueOf(args1),String.valueOf(args2)};proc = Runtime.getRuntime().exec(args1); //该方法参数必须是String类型的//用输入输出流来截取结果BufferedReader in = new BufferedReader(new InputStreamReader(proc.getInputStream(), "gbk")); //gbk 避免汉字乱码while ((line = in.readLine()) != null) {System.out.println(line);lines.add(line); //把Python的print值保存了下来 }in.close();int exitVal = proc.waitFor(); System.out.println("Process exitValue: " + exitVal); } catch (IOException e) {e.printStackTrace();} catch (InterruptedException e) {e.printStackTrace();}System.out.println("Java调Python脚本结束"); String lineData = lines.toString(); return lineData;}}
Process proc = Runtime.getRuntime().exec(args1); 使用该方法调用python脚本或命令
Process exitValue 值说明:
Process exitValue: 0 调用python脚本成功
Process exitValue: 1 java调用python失败
Process exitValue: 2 python脚本执行失败
demo.py 脚本: 以下脚本可支持第三方库使用(未写相关案例)
#coding:utf-8 import pandas as pd import numpy as np import sklearn import sysdef Add(a,b): sum = a + bprint(sum)if __name__ == "__main__":a = []for i in range(1, len(sys.argv)):a.append(sys.argv[i])Add(a[0],a[1])
转载于:https://www.cnblogs.com/forever-zk/p/9443872.html
JavaWeb调用python脚本(可传参)相关推荐
- java执行shell命令权限不够_Java调用shell脚本解决传参和权限问题的方法|chu
1. java 执行shell java 通过 Runtime.getRuntime().exec() 方法执行 shell 的命令或 脚本,exec()方法的参数可以是脚本的路径也可以是直接的 sh ...
- windows10中java调用python脚本
文章目录 1. windows基础环境 1.1 java安装 1.1.1 下载jdk(版本可自选) 1.1.2 安装jdk 1.1.3 配置java环境变量 1.2 python安装 1.2.1 py ...
- 在Java中动态传参调用Python脚本
最近,又接触到一个奇葩的接口,基于老板不断催促赶时间的情况下,在重写java接口和复用已有的python脚本的两条路中选择了后者,但是其实后者并没有好很多,因为我是一个对python的认识仅限于其名称 ...
- java执行python返回null_[转]java调用python脚本以及通过Process.waitFor()直接调用python模块返回错误代码1的一种解决办法...
常见的java调用python脚本方式 通过jython提供的类库实现 通过Runtime.getRuntime()开启进程来执行脚本文件 通过jython提供的类库实现 通过jython实现的话,我 ...
- Python 命令行传参
Python 命令行传参 说到 python 命令行传参,可能大部分人的第一反应就是用 argparse.的确,argparse 在我们需要指定多个预设的参数(如深度学习中指定模型的超参数等)时,是非 ...
- C#调用Python脚本训练并生成AI模型(以Paddle框架为例)
目录 一. C#调用通过IronPython语言移植 1.1 IronPython安装 1.2 示例代码 1.3 运行结果 1.4 特点 二. C#调用Python文件打包dll 2.1 步骤 2.1 ...
- C语言调用Python脚本
目录 一.头文件 二.使用步骤 1.初始化python模块 2.设置python的搜索路径 3.导入python脚本 4.导入调用的方法 5.构建参数 6.调用方法 7.解析返回值 8.释放资源 三. ...
- python解包裹_关于Python中包裹传参和解包裹的理解
原标题:关于Python中包裹传参和解包裹的理解 1.包裹传参 首先思考一个问题:为什么要有包裹传参?原因包括但不仅限于以下两点:①不确定参数的个数.②希望函数定义的更加松散灵活 包裹传参分两种:包裹 ...
- 在Spark Scala/Java应用中调用Python脚本,会么?
摘要:本文将介绍如何在 Spark scala 程序中调用 Python 脚本,Spark java程序调用的过程也大体相同. 本文分享自华为云社区<[Spark]如何在Spark Scala/ ...
最新文章
- boost::mpl模块实现fold相关的测试程序
- CentOS7关于防火墙的命令
- 关于 命令行参数 main(int argc,char** argv)
- getElementByClassName()不兼容的解决办法
- DP--POJ 2241
- 07-OSPF区域类型--NSSA区域/完全NSSA区域
- 基于QQ服务器JavaMail邮箱SSL密码第三方发送邮件
- 实现Flex的TextArea文本中关键字的高亮显示
- C语言 — 编程规范
- redis cluster节点挂掉后_深入浅出—Redis集群的相关详解
- 使用脚本 Nodesource快速安装nodejs环境
- 解决办法:Error:java: Compilation failed: internal java compiler error
- 在Docker Swarm上部署Apache Storm:第1部分
- 单片机:DS1302时钟
- 你一生要知道的74幅世界名画…
- 网页录屏将视频截图保存成gif图片并压缩的方法超详细
- 河北软件职业技术学院计算机专业在哪个校区,河北软件职业技术学院有几个校区,哪个校区最好及各校区介绍...
- UVALive - 4394 (区间dp)
- 『Kaggle』Elo 用户忠诚度预测
- Flutter 正式推出 Windows 平台支持
热门文章
- 【OpenCV】OpenCV函数精讲之 -- 鼠标操作
- CVPR | BASNet:边缘感知的显著性物体检测
- 147页详述「结构在神经网络中的复兴」,图注意力网络一作博士论文公开
- Github | 商汤出品-可在视频里追踪单个对象PySOT
- 2018年最实用机器学习项目Top 6(附开源链接)
- mysql checkpoint时机_MySQL Checkpoint机制
- MySQL利用磁盘缓存写入_MySQL写入缓冲区在数据库中的作用( Change Buffer )
- python编程能有什么用_python编程能做什么开发
- MacBook 没有响应的应用程序 CUH
- ab plc软件_【原创】AB上位机FactoryTalk View的使用教程(上)