繁体   English   中英

如何使用ProcessBuilder使BufferedReader显示正在运行的python脚本的实时输出?

[英]How can I get BufferedReader to display live outputs from a running python script using ProcessBuilder?

我有一个Java脚本,该Java脚本启动一个新线程以使用“进程”构建器执行python脚本。 下面的代码当前从python获取输出,并将其显示在Java运行输出以及JTextArea中。 但是,只有在py脚本运行完毕后,它才大量执行此操作。 从py脚本中写出输出时,是否有办法使输出实时显示? 谢谢!!!!

public void launchPythonScript() {
    try {
        ProcessBuilder py = new ProcessBuilder("cmd", "/C", "PythonScriptLocation (C:\\....)",""+Directory(variable needed for py script));
        Process launch = py.start();
        BufferedReader reader = new BufferedReader(new InputStreamReader(launch.getInputStream()));
        String readLine;
        StringBuilder JavaOutput = new StringBuilder();

        while((readLine = reader.readLine()) != null){
            JavaOutput.append(readLine).append(System.lineSeparator());
            frame2.consoleOutput.setText(JavaOutput.toString());
            System.out.println(readLine);
        }           
    } catch (IOException ex) { Logger.getLogger(Frame1.class.getName()).log(Level.SEVERE, null, ex);}
}

脚本运行时,Process InputStream应该为您提供数据。

您正在一次读取一行,因此,如果您的python脚本在一行中发送所有数据,那么您只会在最后看到输出。

尝试将输出数据分成多行。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM