在java中调用python文件(最方便的一种方法)

方法: 调用 Runtime.getRuntime() 执行脚本文件。

前提: 需要有python环境,不然这种方法是不可用的。

原理:
我们在cmd里是如何执行python文件的呢?

  1. 不传参执行
    在java中调用python文件(最方便的一种方法)_第1张图片
  2. 传参执行
    在java中调用python文件(最方便的一种方法)_第2张图片
    如上图所示,我们将需要传的参数输入到命令的后面就可以了,多个参数以空格隔开,同时python代码中的sys.argv即为接收到的参数(第一个参数即为sys.argv[1],第二个参数即为sys.argv[2]…)。

在java中,Runtime.getRuntime()可以取得当前JVM的运行时环境,这也是在java中唯一一个得到运行时环境的方法。
那么我们在java中调用Runtime.getRuntime()方法便可直接运行上面在cmd里的命令。

下面贴出代码:

public static void main(String[] args) {
		try {
			String exe = "python";
			String command = "D:\\Python\\hello1.py";
			String[] cmdArr = new String[] { exe, command };
			Process process = Runtime.getRuntime().exec(cmdArr);
			BufferedReader in = new BufferedReader(new InputStreamReader(process.getInputStream()));
			String line;
			while( ( line = in.readLine() ) != null ) {
				System.out.println(line);
			}
			in.close();
			int result = process.waitFor();
			System.out.println("执行结果:" + result);
		} catch (IOException | InterruptedException e) {
			e.printStackTrace();
		}
	}

说明:
cmdArr:就是相当于在控制台执行的命令,如果需要传入参数,可以这样写:

String[] cmdArr = new String[] { exe, command, "a" };

同时python文件里需要用 sys.argv[1] 来接收这个“a”,通过这种方式即可把python代码中需要的变量以java的变量的形式传入。
line:接收到python代码输出的值;
result:表示执行结果,为0时,表示python代码正常执行,为1时,表示python代码报错了,为2时,表示没有找到python文件。
以上代码调用了hello1.py文件,输出结果为:

Hello World!
执行结果:0

你可能感兴趣的:(在java中调用python文件(最方便的一种方法))