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小时内删除。