我正在寻找一些调用本机可执行文件/脚本的简单实用程序。我已经相当熟悉使用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以同步将文件行写入数组或其他内容时,我基本上都希望触发一个侦听器。我怎么能/我应该这样做?