写入stdin从java到python

时间:2015-02-03 07:17:10

标签: java python stdin

我在尝试从java写入stdin时遇到问题。

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

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

我正在尝试写入java中的stdout,但它继续打印到控制台。

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

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

1 个答案:

答案 0 :(得分:1)

因此,如果您想将程序stdout重定向到其他程序stdin,则通常在从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 app:

javac App.java 

然后用烟斗打电话给他们:

java App | ./App.py

这将导致输出:

['i am writing to stdin']