我使用python的子进程模块通过stdin和stdout管道与程序交互。如果我在stdout上调用子进程readline(),它将挂起,因为它正在等待换行。
如何读取子流程实例的stdout管道中的所有字符?如果重要的话,我是在Linux上运行的。

最佳答案

其他人似乎也有同样的问题,您可以看到相关的讨论here
如果您在Linux上运行,可以使用select等待进程stdout上的输入。或者,您可以使用

import fcntl, os
fcntl.fcntl(your_process.stdout, fcntl.F_SETFL, os.O_NONBLOCK)

之后,可以使用read()循环,直到遇到换行符(如果希望一次处理一行输出)。

关于python - 我如何读取subprocess.stdout管道中当前的所有内容,然后返回?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1161580/

10-16 03:33