我有这个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");
}
蟒蛇
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
基本上它的作用是它能够打印出从stdout到stdin的四行从java到python . 但是,当stdout完成后,我希望它能够阻塞而不是再次运行 .
我的第二个问题是,system.out.println是否都通过管道传输到stdout缓冲区并且stdin读取它们或者它们是逐行读取的?
我运行代码的命令是这样的
java -jar stdOut.jar | python testStdin.py
1 回答
几乎所有东西都像你想要的那样 . 看看EOFError,看看为什么会这样 .
所以基本上你正在阅读,直到到达流的末尾 . 如果要阻止输入,输出也应保持打开状态 .
对于你的第二个问题,只需将输出延迟一段时间在中间的某个地方 . 在等待其余部分时,您已经看到了第一行 .