Util类:

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.List;
import com.gexin.fastjson.JSON;
import net.sf.json.JSONObject;

/**
 * 
 * @author Hi
 *
 */
public class PythonUtils {

    /**
     * 获取Python返回数据</br>
     * </br>
     * 传入参数:dataList[0]=默认为python,就是python执行的函数</br>
     * 传入参数:dateList[1]=python脚本执行的位置,示例:D:/FileDate/Python/test_p2.py</br>
     * 传入参数:dateList[2]=python脚本接受参数,第一个</br>
     * 传入参数:dateList[3]=python脚本接受参数,第二个</br>
     * 传入参数:dateList[...]=python脚本接受参数,第...个,注意传入顺序</br>
     * @param dateList
     * @return
     */
    public static Object getPyData(List<String> dateList) {

        // 创建返回参数
        Object obj = null;
        try {
            String[] arguments = new String[dateList.size()];
            dateList.toArray(arguments);
            Process process = Runtime.getRuntime().exec(arguments);
            BufferedReader in = new BufferedReader(new InputStreamReader(process.getInputStream(), "GBK"));
            String line = in.readLine();

            obj = JSON.parse(line);

            in.close();
            // java代码中的process.waitFor()返回值为0表示我们调用python脚本成功,
            // 返回值为1表示调用python脚本失败,这和我们通常意义上见到的0与1定义正好相反
            // int re = process.waitFor();
            // System.out.println(re);
        } catch (IOException e) {
            LoggerUtil.error(PythonUtils.class, "Python数据获取异常:", e.getMessage());
        }

        return obj;
    }
    
    /**
     * 获取Python返回数据</br>
     * </br>
     * 传入参数:dataList[0]=默认为python,就是python执行的函数</br>
     * 传入参数:dateList[1]=python脚本执行的位置,示例:D:/FileDate/Python/test_p2.py</br>
     * 传入参数:dateList[2]=python脚本接受参数,第一个</br>
     * 传入参数:dateList[3]=python脚本接受参数,第二个</br>
     * 传入参数:dateList[...]=python脚本接受参数,第...个,注意传入顺序</br>
     * @param dateList
     * @return
     */
    public static PythonToVo getKettlePyData(List<String> dateList) {
        
        // 创建返回参数
        PythonToVo ptv = null;
        try {
            String[] arguments = new String[dateList.size()];
            dateList.toArray(arguments);
            Process process = Runtime.getRuntime().exec(arguments);
            BufferedReader in = new BufferedReader(new InputStreamReader(process.getInputStream(), "GBK"));
            String line = in.readLine();
            
            JSONObject jsonObject = JSONObject.fromObject(line);

            ptv = (PythonToVo) JSONObject.toBean(jsonObject, PythonToVo.class);
            
            in.close();
            // java代码中的process.waitFor()返回值为0表示我们调用python脚本成功,
            // 返回值为1表示调用python脚本失败,这和我们通常意义上见到的0与1定义正好相反
            // int re = process.waitFor();
            // System.out.println(re);
        } catch (IOException e) {
            LoggerUtil.error(PythonUtils.class, "Python数据获取异常:", e.getMessage());
        }
        
        return ptv;
    }

}

VO类:

import java.util.List;

/**
* @Title:
* @author  Hi
* @since   JDK1.8
* @history 2020年01月7日 Hi 新建
*/
public class PythonToVo {

    String message;
    String status;
    List<List<String>> data;

    public String getMessage() {
        return message;
    }

    public void setMessage(String message) {
        this.message = message;
    }

    public String getStatus() {
        return status;
    }

    public void setStatus(String status) {
        this.status = status;
    }

    public List<List<String>> getData() {
        return data;
    }

    public void setData(List<List<String>> data) {
        this.data = data;
    }

    @Override
    public String toString() {
        return "PythonToVo [message=" + message + ", status=" + status + ", data=" + data + "]";
    }

}

Controller类:

    /**
     * 查询Python数据
     * 
     * @param pyPath
     * @param dataList
     * @return
     */
    @RequestMapping(value = "/queryPyData", method = RequestMethod.GET, produces = "application/json")
    @ResponseBody
    public Object selectCyanobacteriaWeeklyData(String pyPath, String dataString) {

        List<String> countList = new ArrayList<String>();
        countList.add("\"python\"");
        countList.add(pyPath);
        countList.addAll(Arrays.asList(dataString));

        Object obj = PythonUtils.getPyData(countList);

        return obj;
    }