一个标准输出到一个标准输入,从 java 到 python
one stdout to one stdin from java to python
我有这个 java 代码
public static main void (String[] args)
{
System.out.println("this is iteration 1");
System.out.println("this is iteration 2");
System.out.println("this is iteration 3");
System.out.println("this is iteration 4");
}
Python
import sys
try:
while True:
data = raw_input()
print "in python " + data
except:
print error
期望的输出
In python : this is iteration 1
In python : this is iteration 2
In python : this is iteration 3
In python : this is iteration 4
当前输出
In python : this is iteration 1
In python : this is iteration 2
In python : this is iteration 3
In python : this is iteration 4
Error
基本上它所做的是能够打印出从标准输出到标准输入的四行,从 java 到 python。但是,当 stdout 完成时,我希望它再次阻塞而不是 运行ning。
我的第二个问题是,system.out.println 是全部通过管道传输到 stdout 缓冲区并由 stdin 读取它们还是逐行读取?
我对运行的命令是这样的
java -jar stdOut.jar | python testStdin.py
几乎一切都如您所愿。看看 EOFError
看看为什么会这样。
import sys
try:
while True:
data = raw_input()
print "in python " + data
except EOFError:
pass
所以基本上您是在阅读,直到到达流的末尾。如果您希望输入阻塞,输出也应保持打开状态。
对于你的第二个问题,只是在中间的某个地方延迟了一会儿输出。您已经看到了第一行,在等待其余部分。
我有这个 java 代码
public static main void (String[] args)
{
System.out.println("this is iteration 1");
System.out.println("this is iteration 2");
System.out.println("this is iteration 3");
System.out.println("this is iteration 4");
}
Python
import sys
try:
while True:
data = raw_input()
print "in python " + data
except:
print error
期望的输出
In python : this is iteration 1
In python : this is iteration 2
In python : this is iteration 3
In python : this is iteration 4
当前输出
In python : this is iteration 1
In python : this is iteration 2
In python : this is iteration 3
In python : this is iteration 4
Error
基本上它所做的是能够打印出从标准输出到标准输入的四行,从 java 到 python。但是,当 stdout 完成时,我希望它再次阻塞而不是 运行ning。
我的第二个问题是,system.out.println 是全部通过管道传输到 stdout 缓冲区并由 stdin 读取它们还是逐行读取?
我对运行的命令是这样的
java -jar stdOut.jar | python testStdin.py
几乎一切都如您所愿。看看 EOFError
看看为什么会这样。
import sys
try:
while True:
data = raw_input()
print "in python " + data
except EOFError:
pass
所以基本上您是在阅读,直到到达流的末尾。如果您希望输入阻塞,输出也应保持打开状态。
对于你的第二个问题,只是在中间的某个地方延迟了一会儿输出。您已经看到了第一行,在等待其余部分。