使用input()将Java程序的输出发送到Python进程

时间:2018-07-27 07:10:32

标签: java python bufferedreader bufferedwriter

感谢您的帮助 我正在尝试从Java进程到Python进程写入和读取字符。 虽然另一种方法(从python打印并在Java进程中获取)可以正常工作,但Python进程似乎无法获取Java进程的输出。

以下是我要使用的代码:

JAVA

用于管理python进程的类

class Pyexe {
Process pypr;
BufferedReader pybuffreader;
BufferedWriter pybuffwriter;
public Pyexe(String filecmd) throws IOException{
    pypr=Runtime.getRuntime().exec("py "+filecmd);
    pybuffreader=new BufferedReader(new InputStreamReader(pypr.getInputStream()));
    pybuffwriter=new BufferedWriter(new OutputStreamWriter(pypr.getOutputStream()));

}
public void Pyend(){
    this.pypr.destroy();
}

}

主要:启动python进程,发送一个字符串,然后获取python输出

public class JavaLearn{
public static void main(String[]argv)throws IOException{

    Pyexe pyexe=new Pyexe("c:/pathtofile/testpy.py");
    pyexe.pybuffwriter.write("Have a nice day\n");
    String line=pyexe.pybuffreader.readLine();
    System.out.println(line);}


    }

PYTHON 一个简单的脚本:获取input(),将其打印为小写

line=input()
print(line.lower())

启动后,python进程将无限期地等待输入。 如果我只使用:

print("Something".lower())

并使用Bufferedreader很好,Java进程从Python获取输出。

有什么想法吗? 预先谢谢你

0 个答案:

没有答案