版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/ailo555/article/details/82853146
java调Python的脚本,我们需要将java这边的参数传到Python那边使用,所以就需要传参。
Python需要导入系统包 import sys,然后使用 sys.argv[i] 接收java传过来的参数就可以。
1、Python代码:
# -*- coding:utf-8 -*-
"""
@author:ailo55
@file:demo.py
@time:2018/9/26 13:58
"""
import sys
if __name__ == '__main__':
print("java 调Python脚本,成功了!")
#遍历接收到的所有参数
for i in range(0, len(sys.argv)):
#把每一个打印出来
print("Python接收参数",i,":",sys.argv[i])
2、java直接在数组中传就可以,如下:
public class PyRun {
public static void main(String[] args) {
try {
System.out.println("run start....");
//数组的第一个参数Python命令,第二是Python脚本文件的绝对路径
String[] args1 = new String[] { "python", "C:\\fintel\\pytools\\add.py","参数1","参数2","参数3"};
Process pr = Runtime.getRuntime().exec(args1);//执行脚本命令
BufferedReader in = new BufferedReader(new InputStreamReader(pr.getInputStream(),"GBK"));
String line;
while ((line = in.readLine()) != null) {
System.out.println(line);
}
in.close();
pr.waitFor();
System.out.println("run end....");
} catch (Exception e) {
e.printStackTrace();
}
}
}
3、跑起来的结果:
4、总结:从返回的结果,得出了一个注意的东西,java这边传过去的参数,Python接收是从数组第二下标开始算起的,即就是从文件的路径参数开始,因为第一个元素是执行Python的命令,就是在cmd运行Python脚本一样。所以在Python那边接收参数处理的时候就要注意了,要去相对应的参数,不然就容易出错。还有一个问题就是ava调Pythond的时候,如果Python出错了没有提示,后边将进一步研究.