Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/396.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python脚本未在Java中输出_Java_Python_Python 3.4_Processbuilder - Fatal编程技术网

Python脚本未在Java中输出

Python脚本未在Java中输出,java,python,python-3.4,processbuilder,Java,Python,Python 3.4,Processbuilder,有人能解释为什么我没有输出吗?java代码在python脚本中输出错误很好,但不是python代码成功时返回的数据帧。我在Python 3.4环境中部署了一个Python脚本,该脚本通过Java调用如下: 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.DataFr

有人能解释为什么我没有输出吗?java代码在python脚本中输出错误很好,但不是python代码成功时返回的数据帧。我在Python 3.4环境中部署了一个Python脚本,该脚本通过Java调用如下:

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);
}  
私有静态字符串executePythonCorrelations(){
String dir=System.getProperty(“user.home”)+“/insights/”;
List命令=new ArrayList();
commands.add(“python3”);
commands.add(dir+“touction\u corr\u conn.py”);
//添加(“+”类别ID);
字符串ret=“”;
试一试{
ProcessBuilder pb=新的ProcessBuilder().command(命令);
最终过程p=pb.start();
BufferedReader输出=新的BufferedReader(新的InputStreamReader(p.getInputStream());
BufferedReader error=新的BufferedReader(新的InputStreamReader(p.getErrorStream());
字符串行=”;
而((line=output.readLine())!=null){
ret+=行+“
”; } 而((line=error.readLine())!=null){ ret+=“错误:“+line+”
”; } }捕获(IOE异常){ 返回(“异常:+e.getMessage()+”
); } 返回(ret); }
我相信最后你需要
打印(df)
。Python的交互模式显示表达式的值,但脚本模式(从Java调用时使用的模式)不显示。在您给定的代码中,Python的最后一行计算
df
,但是您没有给它一个命令(动词),告诉Python运行时系统如何处理该值,因此它会死在数据堆栈的顶部。

对Python的数据帧一无所知,但是,您的python脚本看起来根本没有向stdout输出任何内容?您确定新的InputStreamReader(p.getInputStream())?你不想
p.getOutputStream()
在这里吗?@dunni有点困惑,这似乎是正确的流。它这样命名是因为
getInputStream
返回一个
InputStream
。这并不是因为它连接到子进程的
stdin
,正如人们所想的那样。