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