我正试图从当前时间的无限制Popen.stdout对象中获取最后N行。并且无限制地我指的是无限/许多日志条目被写入stdout。 我试过Popen.stdout.readline()受时间的限制,但这只会产生很多随机问题,特别是输出很少。 某种当前输出的快照会对我有所帮助,但我无法找到类似的东西。我主要找到的所有解决方案都是针对终止的外部进程,但我的是一个服务器应用程序,应该能够在读完最后一行后写入stdout。
问候,
Faerbit
答案 0 :(得分:0)
在Unix上,当您启动流程时,您可以先将其tail
输入管道:
p=subprocess.Popen("your_process.sh | tail --lines=3", stdout=subprocess.PIPE, shell=True)
r=p.communicate()
print r[0]
使用shell=True
是关键。