java调Python脚本(三):传参数问题

版权声明:本文为博主原创文章,未经博主允许不得转载。 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出错了没有提示,后边将进一步研究.

猜你喜欢

转载自blog.csdn.net/ailo555/article/details/82853146