以下是个人在使用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脚本(可传参)相关推荐

  1. java执行shell命令权限不够_Java调用shell脚本解决传参和权限问题的方法|chu

    1. java 执行shell java 通过 Runtime.getRuntime().exec() 方法执行 shell 的命令或 脚本,exec()方法的参数可以是脚本的路径也可以是直接的 sh ...

  2. 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 ...

  3. 在Java中动态传参调用Python脚本

    最近,又接触到一个奇葩的接口,基于老板不断催促赶时间的情况下,在重写java接口和复用已有的python脚本的两条路中选择了后者,但是其实后者并没有好很多,因为我是一个对python的认识仅限于其名称 ...

  4. java执行python返回null_[转]java调用python脚本以及通过Process.waitFor()直接调用python模块返回错误代码1的一种解决办法...

    常见的java调用python脚本方式 通过jython提供的类库实现 通过Runtime.getRuntime()开启进程来执行脚本文件 通过jython提供的类库实现 通过jython实现的话,我 ...

  5. Python 命令行传参

    Python 命令行传参 说到 python 命令行传参,可能大部分人的第一反应就是用 argparse.的确,argparse 在我们需要指定多个预设的参数(如深度学习中指定模型的超参数等)时,是非 ...

  6. C#调用Python脚本训练并生成AI模型(以Paddle框架为例)

    目录 一. C#调用通过IronPython语言移植 1.1 IronPython安装 1.2 示例代码 1.3 运行结果 1.4 特点 二. C#调用Python文件打包dll 2.1 步骤 2.1 ...

  7. C语言调用Python脚本

    目录 一.头文件 二.使用步骤 1.初始化python模块 2.设置python的搜索路径 3.导入python脚本 4.导入调用的方法 5.构建参数 6.调用方法 7.解析返回值 8.释放资源 三. ...

  8. python解包裹_关于Python中包裹传参和解包裹的理解

    原标题:关于Python中包裹传参和解包裹的理解 1.包裹传参 首先思考一个问题:为什么要有包裹传参?原因包括但不仅限于以下两点:①不确定参数的个数.②希望函数定义的更加松散灵活 包裹传参分两种:包裹 ...

  9. 在Spark Scala/Java应用中调用Python脚本,会么?

    摘要:本文将介绍如何在 Spark scala 程序中调用 Python 脚本,Spark java程序调用的过程也大体相同. 本文分享自华为云社区<[Spark]如何在Spark Scala/ ...

最新文章

  1. boost::mpl模块实现fold相关的测试程序
  2. CentOS7关于防火墙的命令
  3. 关于 命令行参数 main(int argc,char** argv)
  4. getElementByClassName()不兼容的解决办法
  5. DP--POJ 2241
  6. 07-OSPF区域类型--NSSA区域/完全NSSA区域
  7. 基于QQ服务器JavaMail邮箱SSL密码第三方发送邮件
  8. 实现Flex的TextArea文本中关键字的高亮显示
  9. C语言 — 编程规范
  10. redis cluster节点挂掉后_深入浅出—Redis集群的相关详解
  11. 使用脚本 Nodesource快速安装nodejs环境
  12. 解决办法:Error:java: Compilation failed: internal java compiler error
  13. 在Docker Swarm上部署Apache Storm:第1部分
  14. 单片机:DS1302时钟
  15. 你一生要知道的74幅世界名画…
  16. 网页录屏将视频截图保存成gif图片并压缩的方法超详细
  17. 河北软件职业技术学院计算机专业在哪个校区,河北软件职业技术学院有几个校区,哪个校区最好及各校区介绍...
  18. UVALive - 4394 (区间dp)
  19. 『Kaggle』Elo 用户忠诚度预测
  20. Flutter 正式推出 Windows 平台支持

热门文章

  1. 【OpenCV】OpenCV函数精讲之 -- 鼠标操作
  2. CVPR | BASNet:边缘感知的显著性物体检测
  3. 147页详述「结构在神经网络中的复兴」,图注意力网络一作博士论文公开
  4. Github | 商汤出品-可在视频里追踪单个对象PySOT
  5. 2018年最实用机器学习项目Top 6(附开源链接)
  6. mysql checkpoint时机_MySQL Checkpoint机制
  7. MySQL利用磁盘缓存写入_MySQL写入缓冲区在数据库中的作用( Change Buffer )
  8. python编程能有什么用_python编程能做什么开发
  9. MacBook 没有响应的应用程序 CUH
  10. ab plc软件_【原创】AB上位机FactoryTalk View的使用教程(上)