java直接调⽤python脚本,并动态传递list参数
最近需要通过java代码传递list参数给python进⾏数据的处理,因此,查了⼀些资料,并结合⾃⼰的需求做了⼀个demo,现在进⾏⼀下总结。
1. python代码
1import sys
2import numpy as np
3
4if__name__ == '__main__':
5 list = []
6for i in range(1, len(sys.argv)):
7 list.append(sys.argv[i].replace(",",""))
8# 根据个⼈数据进⾏处理
9 list[0] = list[0].replace("[","")
10 list[len(sys.argv)-2] = list[len(sys.argv)-2].replace("]", "")
11# 构建矩阵,测试第三⽅包的调⽤
12 b =[[i for x in range(4)] for i in range(1, len(sys.argv))]
13 b1 = np.mat(b)
14print(b1)
15print(b1.shape)
16print(list)
注:循环为什么要从1开始?由于sys.argv[0]存储的是py⽂件⾃⾝的路径,因此接受参数从sys.argv[1]开始。
2. java代码
1package com.ob.javatopython;
2
3import java.io.BufferedReader;
4import java.io.InputStreamReader;
5import java.util.ArrayList;
6
7public class ToPythonClass {
8public void ToPython(ArrayList<String> list) {
9try {
10 Process pr = Runtime().exec(
11 "E:\\python3\\ F:\\javaTopython\\linkPython.py "
12 + list);
python转java代码13 BufferedReader in = new BufferedReader(new InputStream()));
14 String line;
15while ((line = in.readLine()) != null) {
16 System.out.println("line:" + line);
17 }
18 in.close();
19 pr.waitFor();
20 } catch (Exception e) {
21 e.printStackTrace();
22 }
23 }
24 }
注:重点是红⾊标记部分;
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论