从Java调用python脚本时获取输出的问题

时间:2014-04-06 13:09:29

标签: java python

我有一个Java程序来调用python脚本。我用过exec方法。请在下面找到代码段:

Python程序(从维基百科收集一部分文本),当单独运行时,会给我正确的输出。从Java调用时,我没有从python程序获得完整的输出。

我使用ready()方法检查了BufferedReader对象的状态(如here所述,并且代码进入无限循环。

我认为其他人也遇到过类似的问题 - https://stackoverflow.com/a/20661352/3409074

任何人都可以帮助我吗?

      public String enhanceData(String name,String entity) {
            String s = null;
            StringBuffer output = new StringBuffer();
            try{
                String command="python C://enhancer.py "+name+" "+entity;
                Process p = Runtime.getRuntime().exec(command);
                BufferedReader stdError=new BufferedReader(new InputStreamReader(p.getErrorStream()));
                BufferedReader stdInput = new BufferedReader(new InputStreamReader(p.getInputStream()));
                while ((s = stdInput.readLine()) != null) {

                    System.out.println(s);
                    output.append(s);
                  }

1 个答案:

答案 0 :(得分:1)

while循环条件实际上已经读取了一行,所以你在循环中每次都读取它。

while ((s = stdInput.readLine()) != null) {
    //s=stdInput.readLine();  <- don't need this
    System.out.println(s);
    output.append(s);
}

/尼克