一个stdout到一个stdin从java到python

时间:2015-02-05 00:56:05

标签: java python stdout stdin

我有这个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

它的基本功能是能够打印出从stdout到stdin的四行从java到python。但是,当stdout完成时,我希望它阻塞而不是再次运行。

我的第二个问题是,system.out.println是否全部通过管道传输到stdout缓冲区并且stdin读取它们或者它们是逐行读取的?

我运行代码的命令就是这个

java -jar stdOut.jar | python testStdin.py

1 个答案:

答案 0 :(得分:1)

几乎所有东西都像你想要的那样。看看EOFError,看看为什么会发生这种情况。

import sys 

try:
    while True:
        data = raw_input()
        print "in python " + data
except EOFError:
    pass

所以基本上你正在阅读,直到到达流的末尾。如果您希望输入阻止,输出也应保持打开状态。

对于你的第二个问题,只需将输出延迟一段时间在中间。你已经看到了第一行,同时等待其余部分。