从子进程正确读取stdout/stderr

晚上,
我在通过Python2.4运行进程时遇到了问题
子进程模块.示例代码:
==================================================
Def run(命令):
Run=subcess.Popen(命令,外壳=True,stdout=subcess.PIPE,stderr=subcess.PIPE)
#等待进程返回
返回代码=run.Wait()
Stdout=run.stdout.readines()
Stderr=run.stderr.readines()
#去掉每行末尾的换行符
Stdout=[stdout中的行的line.rstrie('\n')]
Stderr=[stderr中的行的line.rstrie('\n')]
返回返回代码、标准输出、标准错误
==================================================
不幸的是,该定义在运行执行大量
输出.我相信这个问题在Bug#1162428中也有描述.
它说:"在进程上等待()之前,您必须读取数据."
说得容易,做得难.如果我将READLINES()调用放在
那么进程也会挂起,等待更多的行.
然后,我读到了处理这两种情况的通信()调用
Stdout/stderr读取并等待进程结束.
不幸的是,它按字符而不是按行返回输出.我
当然可以重新加入队伍.但不知何故,我觉得我错过了
一些简单的东西.
有什么主意吗?
请多多关照
克里斯托弗

标签: python

添加新评论