首页 文章

一个stdout到一个stdin从java到python

提问于
浏览
0

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

  • 1

    几乎所有东西都像你想要的那样 . 看看EOFError,看看为什么会这样 .

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

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

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

相关问题