首页 文章

如何读取当前在subprocess.stdout管道中的所有内容然后返回?

提问于
浏览
1

我正在使用python的子进程模块通过stdin和stdout管道与程序进行交互 . 如果我在stdout上调用subprocesses readline(),它会挂起,因为它正在等待换行符 .

如何读取子流程实例的stdout管道中的所有字符?如果重要的话,我在Linux上运行 .

2 回答

  • 4

    其他人似乎有同样的问题,你可以看到相关的讨论here .

    如果您在Linux上运行,则可以使用select等待进程'stdout上的输入 . 或者,您可以使用进程'stdout的模式更改为非阻塞模式

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

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

  • 2

    您应该使用read()对一组字符进行循环 .

相关问题