从subprocess.Popen同步获取STDOUT和STDERR

时间:2012-07-19 19:25:15

标签: python subprocess popen

我正在寻找一些调用本机可执行文件/脚本的简单实用程序。我已经相当熟悉使用subprocess.Popen来打开进程,但我不明白如何在Python中有效地同步访问子进程'STDOUT和STDERR。我知道我可以传递一个类似file的对象并且它会正常工作,但我该怎么做呢?我不想将它写入实际的文件系统文件,所以我该怎么做?我需要mmap.mmap()内存文件API吗?

我想做这样的事情:

class CoolReader():

    def __init__(self, target):
        self.target = target 

    def write(self, output):
        self.target.append({timestamp: time.time(), value: output})

stdoutLines = []
stderrLines = []

stdoutReader = CoolReader(stdoutLines)
stderrReader = CoolReader(stderrLines)

subprocess.Popen("ls", stdout=stdoutReader, stderr=stderrReader)

有更好的方法吗?每次将一行写入STDOUT或STDERR以同步将文件行写入数组或其他内容时,我基本上都希望触发一个侦听器。我怎么能/我应该这样做?

0 个答案:

没有答案