Java代码中调用python程序

Java代码中调用python程序

制作人:全心全意

使用jython调用python程序(不可使用第三方库)

导入依赖jar包

  下载地址:https://www.jython.org/download.html

  maven导入:

		<dependency>
			<groupId>org.python</groupId>
			<artifactId>jython-standalone</artifactId>
			<version>2.7.0</version>
		</dependency>

  

java调用示例:

package com.zq.jpy;

import java.io.UnsupportedEncodingException;

import org.python.core.Py;
import org.python.core.PyFunction;
import org.python.core.PyInteger;
import org.python.core.PyObject;
import org.python.core.PyString;
import org.python.util.PythonInterpreter;

public class Jpy {
	public static void main(String[] args) {
		// -Dpython.console.encoding=UTF-8
		// 直接执行python命令
		System.out.println("=============直接执行python命令==============");
		PythonInterpreter interpreter = new PythonInterpreter();
		interpreter.exec("a='hello world'; ");
		interpreter.exec("print(a);");

		// 执行python脚本
		System.out.println("=============执行python脚本==============");
		interpreter.execfile("E:/jpy.py"); // 该py脚本中不可包含第三方库

		// 调用python脚本中的函数
		System.out.println("=============调用python脚本中的函数==============");
		// interpreter.execfile("E:/jpy.py"); // 该py脚本中不可包含第三方库
		PyFunction pyFunction = interpreter.get("add", PyFunction.class);
		PyObject pyObject1 = pyFunction.__call__(new PyInteger(5), new PyInteger(3)); // 调用函数
		System.out.println(pyObject1);

		PyObject pyObject2 = pyFunction.__call__(new PyString("wo"), new PyString("ni")); // 调用函数
		System.out.println(pyObject2.toString());
		PyObject pyObject3 = pyFunction.__call__(Py.newStringUTF8("我"),
				Py.newStringUTF8("你")); // 调用函数中使用了中文
		try {
			System.out.println(
					new String(pyObject3.toString().getBytes("iso8859-1"), "utf-8")); // 对返回的中文解码在编码
		} catch (UnsupportedEncodingException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

}

  

python程序示例:

#!/usr/bin/env python
# -*- encoding: utf-8 -*-


print("我是python脚本")


def add(a,b):
    print(a+b)
    return a + b;

  

 

使用Runtime.getRuntime调用python程序(可以使用第三方库)

  请参照:Java调用CMD命令

posted @ 2021-01-14 11:41  全心全意_运维  阅读(457)  评论(0编辑  收藏  举报