如何读取当前在subprocess.stdout管道中的所有内容并返回?
我正在使用Python的subprocess模块来通过标准输入和输出与一个程序进行交互。如果我在输出的stdout上调用subprocess的readline(),程序就会卡住,因为它在等待换行符。
我该如何读取子进程实例的stdout管道中的所有字符呢?如果有关系的话,我是在Linux系统上运行。
2 个回答
2
你应该用read()这个函数来循环读取固定数量的字符。
4
似乎还有其他人遇到过同样的问题,你可以在这里查看相关讨论。
如果你是在Linux系统上,可以使用select来等待进程的标准输出(stdout)有输入。或者,你可以通过以下方式将进程的标准输出模式改为非阻塞模式:
import fcntl, os
fcntl.fcntl(your_process.stdout, fcntl.F_SETFL, os.O_NONBLOCK)
这样你就可以使用read()方法循环读取,直到遇到换行符(如果你想逐行处理输出的话)。