java程序和python脚本

时间:2018-02-24 11:06:24

标签: java python

我希望在我的java应用程序和它通过代码调用的python脚本之间实现进程间通信 我们的想法是python脚本在无限循环中运行,接受输入,处理输入并在控制台中打印结果。 同时,java应用程序发送输入,等待python脚本处理它,并在python脚本完成处理时从控制台读取它(使用python进程中的InputStream,为简洁起见省略)。如何实现这种沟通?

Java程序

import java.io.*;

public class JavaProgram {

public static void main(String[] args) throws IOException{

    Process p = Runtime.getRuntime().exec("python pythonScript.py");

    OutputStream os = p.getOutputStream();
    os.write("Hello".getBytes());
    os.close();

    os = p.getOutputStream();
    os.write("World".getBytes());
    os.close();

    os = p.getOutputStream();
    os.write("quit".getBytes());
    os.close();

    }
}

Python脚本

def transformString(string):
    return "Java said: " + string

file = open("writingFile.txt", "w+")

while True:
    user_input = input('\n> ')
    message = transformString(user_input)

    if message == "quit":
        break

    file.write(message + "\n")
    print(message + "\n")

file.write("closing file...\n")
file.close()

上面代码的问题是java app只能发送一次输入(只有" Hello"被发送),然后关闭输出流(尝试不关闭它)。我知道这是因为python脚本从未完成。 以下是文件writingFile.txt

的内容
Java said: Hello  

*注意:python脚本启动一次非常重要,因为原始脚本的init方法非常耗时。 *第二个注意事项:python的处理方法也需要一些时间,所以我不知道如何告诉java程序何时应该开始读取输出。

0 个答案:

没有答案