从 java 写入标准输入到 python

writing to stdin from java to python

我在尝试从 java 写入标准输入时遇到问题。

这是我的 python 代码,它将接收标准输入

import sys 
data = sys.stdin.readlines()
print data 

我正在尝试在 java 中写入标准输出,但它一直打印到控制台。

BufferedWriter out = new BufferedWriter(new OutputStreamWriter(System.out));
out.write("i am writing to stdin");
out.flush();

但是它继续在 java 控制台而不是 python shell 中打印。

因此,如果您想将一个程序的标准输出重定向到另一个程序的标准输入,您通常会在从 shell 调用它们时使用管道。以下是您的代码执行此操作的示例场景:

Java 端(文件名为 App.java):

import java.io.*;

public class App{
    public static void main(String[] args) throws Exception{
        BufferedWriter out = new BufferedWriter(new OutputStreamWriter(System.out));
        out.write("i am writing to stdin");
        out.flush();
    }
}

Python 端(文件名为 App.py):

#!/usr/bin/env python
import sys 
data = sys.stdin.readlines()
print data 

然后在 shell:

首先编译java应用程序:

javac App.java 

然后用管道调用它们:

java App | ./App.py

这将导致输出:

['i am writing to stdin']