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

2024-10-02 08:24:27 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个Java脚本,它启动一个新线程,使用processbuilder执行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);}
}

Tags: py脚本newreadlinejavalaunchsystemnull
1条回答
网友
1楼 · 发布于 2024-10-02 08:24:27

进程InputStream应该在脚本运行时提供数据。在

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

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

相关问题 更多 >

    热门问题