我将使用subprocess.Popen()命令来完成基本设置,将stdout重定向到一个变量中,稍后将返回到Python脚本的其他部分。
这是我的基本Popen代码:
process = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
# wait for the process to terminate
out, err = process.communicate()
errcode = process.returncode
print out
这对于许多基本用例(如
ls -al
或类似情况)非常有效。但是,我在想如何处理从运行时间更长(或无限期运行)的进程(如tail -f foo.log
)定期且一致地获取输出。是否有一种方法可以循环周期性地读取stdout?或生成一个线程来定期检查和返回每个结果?这里最好的方法是什么?谢谢!