我怎么看目前的subprocess.stdout管一切,然后返回?(how do I read ev

2019-09-20 01:37发布

我使用Python的子模块通过标准输入和stdout管道程序交互。 如果我呼吁标准输出子进程的ReadLine(),它挂起,因为它正在等待一个换行符。

我怎样才能做到在子实例的标准输出管道的所有字符读? 如果它的事项,我在Linux上运行。

Answer 1:

其他人似乎也有同样的问题,你可以看到相关的讨论在这里 。

如果你是在Linux上运行,你可以使用select等待的过程标准输出输入。 另外,您使用的stdout改变进程的模式,以无阻塞

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

使用后的read(),直到你遇到一个换行符(如果你想一次处理输出一行),你可以循环。



Answer 2:

应使用循环读取()针对字符集数。



文章来源: how do I read everything currently in a subprocess.stdout pipe and then return?
标签: python linux