我在尝试从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中打印。
答案 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']