java - 从 java 到 python 的一个标准输出到一个标准输入

标签 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

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

我的第二个问题是,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 - 从 java 到 python 的一个标准输出到一个标准输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28334426/

相关文章:

java - 使用在 SPARQL 查询内的查询字符串外部声明的变量 - 使用 JSP 和 Java Servlet

python - 是否可以从 coverage.py 报告中排除测试目录?

python 3 : AttributeError: 'module' object has no attribute '__path__' using urllib in terminal

python - Jupyter pandas.DataFrame 输出表格式配置

python - IOError: [Errno 22] 传入的时钟() 参数无效

Java 使用递归进行乘法

java - Digital Ocean 中托管的应用程序的 MySQL JDBC 驱动程序连接字符串应该是什么?

java - Liquibase 与数据库交互

perl - Perl脚本-从管道ssh shell 将STDOUT打印到文件中

node.js - 提示时 STDOUT 位于 STDIN 前面?