Python脚本不以Java输出

问题描述 投票:1回答:1

有人可以解释为什么我没有输出? java代码很好地输出了python脚本中的错误,但不是Python代码成功时返回的DataFrame。我在Python 3.4环境中部署了一个类似于通过Java调用的python脚本:

d = {'one' : pd.Series([1., 2., 3.], index=['a', 'b', 'c']), 
     'two' : pd.Series([1., 2., 3., 4.], index=['a', 'b', 'c', 'd'])} 
df = pd.DataFrame(d) 

df

我调用python的Java代码:

private static String executePythonCorrelations() {
    String dir=System.getProperty("user.home")+"/insights/";  
    List<String> commands = new ArrayList<>();
    commands.add("python3");
    commands.add(dir+"sentiment_corr_conn.py");
    //commands.add(""+_categoryId);
    String ret="";
    try {
        ProcessBuilder pb = new ProcessBuilder().command(commands);
        final Process p = pb.start();
        BufferedReader output = new BufferedReader(new InputStreamReader(p.getInputStream()));
        BufferedReader error = new BufferedReader(new InputStreamReader(p.getErrorStream()));

        String line="";
        while ((line = output.readLine()) != null) {
            ret+=line+"<br/>";
        }

        while ((line = error.readLine()) != null) {
            ret+="ERROR: "+line+"<br/>";
        }

    } catch (IOException e) {
        return("EXCEPTION: "+e.getMessage()+"<br/>");
    }
    return(ret);
}  
java python python-3.4 processbuilder
1个回答
1
投票

我相信你最后需要print(df)。 Python的交互模式显示表达式的值,但脚本模式(您从Java调用它时使用的脚本模式)不会。在你给定的代码中,最后一行Python评估df,但是你没有给它一个命令(动词)告诉Python运行时系统如何处理这个值,所以它死在数据堆栈的顶部。

© www.soinside.com 2019 - 2024. All rights reserved.