java调用Python脚本文件的同时,并向其中传入参数
2018-01-24 16:39
609 查看
我的项目部署到linux环境中的tomcat中,使用java调用的是已经编译后的Python二进制文件,在此只贴出关键代码,以前不知道怎么在调用命令的时候同时向其中传递所需参数,现在这个问题终于解决了
String ip1 = request.getParameter("ip1");//旧ip
String ip2 = request.getParameter("ip2");//新ip
String mask = request.getParameter("mask");
String port = request.getParameter("port");
String closetime = request.getParameter("closetime");
String destipaddr = request.getParameter("destipaddr");
String baud = request.getParameter("baud");
String databit = request.getParameter("databit");
String stopbit = request.getParameter("stopbit");
String checkbit = request.getParameter("checkbit");
String[] cmds ={"/bin/sh","-c","/usr/local/bin/set_serial_port "+ip1+" "+ip2+" "+mask+" "+port+" "+baud+" "+databit+" "+stopbit+" "+checkbit+" "+closetime}; //红色部分就是在调用命令的同时需要传递的参数
后面追加的就是需要传入的参数,"usr/local/bin/set_serial_port "为已经编译后的Python文件(二进制文件,所以贴出来也没用)
Process pro = Runtime.getRuntime().exec(cmds);
int code = pro.waitFor();
code返回0表示正常执行结束,非0表示执行该命令出现了问题,Process.waitFor()的返回值含义
对应的详细介绍请参照我的博客点击打开链接,在此我需要强调一点的是:在执行使用java执行不管是linux命令还是Python还是shell脚本,切记一定要写绝对路径,因为自己曾经遇到过一个问题,当时是在别人开发的基础上进行二次开发,在linux系统不重启的情况下命令执行没问题,但是一旦重启linux系统后(我们当时的环境是linux重启后tomcat随之也启动了)
,之前调用的命令就调用不了,pro.waitFor()总是返回127,网上查资料返回127表示秘钥过期,后来无意中发现在重启linux系统后,将tomcat手动关闭再手动开启服务那条命令又可能正常使用了(当时在想是不是跟环境变量有关),明显客户所不希望的,最后经过好长一段时间终于问题得到解决,当时调用命令写的是相对路径,在linux重启或关机后,环境都改变了,命令自然不管用,所以正确的解决方案就是调用命令时写绝对路径就行了,写出来希望自己可以长个记性!以希望对他人有所不帮助。这篇简短的博客旨在告诉自己java在调用Python脚本的同时怎样向其中传参,也希望看到文章的你如果在遇到相同的或类似的问题是能够带给你些许灵感,我也将倍感荣幸,感谢支持!
String ip1 = request.getParameter("ip1");//旧ip
String ip2 = request.getParameter("ip2");//新ip
String mask = request.getParameter("mask");
String port = request.getParameter("port");
String closetime = request.getParameter("closetime");
String destipaddr = request.getParameter("destipaddr");
String baud = request.getParameter("baud");
String databit = request.getParameter("databit");
String stopbit = request.getParameter("stopbit");
String checkbit = request.getParameter("checkbit");
String[] cmds ={"/bin/sh","-c","/usr/local/bin/set_serial_port "+ip1+" "+ip2+" "+mask+" "+port+" "+baud+" "+databit+" "+stopbit+" "+checkbit+" "+closetime}; //红色部分就是在调用命令的同时需要传递的参数
后面追加的就是需要传入的参数,"usr/local/bin/set_serial_port "为已经编译后的Python文件(二进制文件,所以贴出来也没用)
Process pro = Runtime.getRuntime().exec(cmds);
int code = pro.waitFor();
code返回0表示正常执行结束,非0表示执行该命令出现了问题,Process.waitFor()的返回值含义
对应的详细介绍请参照我的博客点击打开链接,在此我需要强调一点的是:在执行使用java执行不管是linux命令还是Python还是shell脚本,切记一定要写绝对路径,因为自己曾经遇到过一个问题,当时是在别人开发的基础上进行二次开发,在linux系统不重启的情况下命令执行没问题,但是一旦重启linux系统后(我们当时的环境是linux重启后tomcat随之也启动了)
,之前调用的命令就调用不了,pro.waitFor()总是返回127,网上查资料返回127表示秘钥过期,后来无意中发现在重启linux系统后,将tomcat手动关闭再手动开启服务那条命令又可能正常使用了(当时在想是不是跟环境变量有关),明显客户所不希望的,最后经过好长一段时间终于问题得到解决,当时调用命令写的是相对路径,在linux重启或关机后,环境都改变了,命令自然不管用,所以正确的解决方案就是调用命令时写绝对路径就行了,写出来希望自己可以长个记性!以希望对他人有所不帮助。这篇简短的博客旨在告诉自己java在调用Python脚本的同时怎样向其中传参,也希望看到文章的你如果在遇到相同的或类似的问题是能够带给你些许灵感,我也将倍感荣幸,感谢支持!
相关文章推荐
- Java代码调用Shell脚本并传入参数实现DB2数据库表导出到文件
- Java代码调用Shell脚本并传入参数实现DB2数据库表导出到文件
- java调用python脚本文件大盘点
- java 直接调用python脚本,并传递参数
- java调用python脚本并向python脚本传递参数
- java调用C的exe文件并传入参数,读出exe输出结果
- Java 调用bat文件并传入参数,并且不出现cmd的黑框框
- 关于使用c#调用python脚本文件,脚本文件需要传递参数
- java调用oracle存储过程传入参数为数组的处理
- 批处理调用python脚本替换文件内容
- python用ctypes调用C库文件,并且实现字符串传入传出。。。。。
- Java调用Windows批处理或Linux脚本或可执行文件
- python 如何调用带参数的shell脚本
- JAVA调用存储过程--传入集合参数
- (windows)python脚本:自动备份并压缩文件,同时删除过期文件
- C调用Python脚本文件里的函数
- python 获取脚本传递参数 及参数个数 检查文件 变量 是否存在 退出脚本
- java 上传文件代码,支持中文文件名和中文文件内容,可以同时提交多个参数
- 从 stdin 读取输入的C程序示例 && python脚本调用可执行文件
- java调用Python文件