您的位置:首页 > 编程语言 > Python开发

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脚本的同时怎样向其中传参,也希望看到文章的你如果在遇到相同的或类似的问题是能够带给你些许灵感,我也将倍感荣幸,感谢支持!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: