本文实例讲述了Java实现的执行python脚本工具类。分享给大家供大家参考,具体如下:
这里java中执行python脚本工具类,需要使用jython.jar
java中执行python脚本工具类,学习的时候写着玩:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
|
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; import org.python.util.PythonInterpreter; 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<PyObject> transP2JData(String filePath, String...ponames) throws IOException{ PythonInterpreter pin = new PythonInterpreter(); InputStream is = new FileInputStream(filePath); pin.execfile(is); is.close(); List<PyObject> 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<String, Object> 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<PyObject> transJ2PData(String filePath, Map<String, Object> 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<PyObject> pos = new ArrayList<>(); for (String poname : ponames) { PyObject po = pin.get(poname); pos.add(po); } return pos; } } |
附:jython.jar点击此处本站下载。
希望本文所述对大家java程序设计有所帮助。
原文链接:https://www.oschina.net/code/snippet_119671_5971