从 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']
我在尝试从 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']