1、在Eclipse或者Myeclipse的java工程中导入Jython.jar包。http://down.51cto.com/data/2094597
2、编写读取Python的工具类。import org.python.util.PythonInterpreter;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import org.python.core.PyObject;
public final class JythonUtil {
private JythonUtil(){}
/**
* 执行某个.py文件
* @param filePath
* @throws IOException
*/
public static void pythonExecute(String filePath) throws IOException{
PythonInterpreter pin = new PythonInterpreter();
InputStream is = new FileInputStream(filePath);
pin.execfile(is);
is.close();
}
/**
* 获取python程序的变量值
* @param filePath
* @param ponames
* @return
* @throws IOException
*/
public static List transP2JData(String filePath, String...ponames) throws IOException{
PythonInterpreter pin = new PythonInterpreter();
InputStream is = new FileInputStream(filePath);
pin.execfile(is);
is.close();
List pos = new ArrayList();
for (String poname : ponames) {
PyObject po = pin.get(poname);
pos.add(po);
}
return pos;
}
/**
* 将参数赋给python程序执行
* @param filePath
* @param pomaps
* @throws IOException
*/
public static void transJ2PData(String filePath, Map pomaps) throws IOException {
PythonInterpreter pin = new PythonInterpreter();
InputStream is = new FileInputStream(filePath);
for (String pomapkey : pomaps.keySet()) {
pin.set(pomapkey, pomaps.get(pomapkey));
}
pin.execfile(is);
is.close();
}
/**
* 将参数赋给python程序执行,并获取python中的变量值
* @param filePath
* @param pomaps
* @param ponames
* @return
* @throws IOException
*/
public static List transJ2PData(String filePath, Map pomaps, String...ponames) throws IOException {
PythonInterpreter pin = new PythonInterpreter();
InputStream is = new FileInputStream(filePath);
for (String pomapkey : pomaps.keySet()) {
pin.set(pomapkey, pomaps.get(pomapkey));
}
pin.execfile(is);
is.close();
List pos = new ArrayList();
for (String poname : ponames) {
PyObject po = pin.get(poname);
pos.add(po);
}
return pos;
}
}
3、测试调用*.py的python脚本是否能用import java.io.IOException;
public class JythonUtilTest {
/**
* @param args
*/
public static void main(String[] args) {
String path = "E:\\PythonScript\\hello.py";
try {
//通过工具类的pythonexecute方法执行*.py的脚本,传入文件路径
JythonUtil.pythonExecute(path);
System.out.println("执行成功");
} catch (IOException e) {
e.printStackTrace();
}
}
}
4、执行结果:
1、hello.pyweb文件内容如下:
print("hello");
2、执行结果: