繁体   English   中英

如何从无限的Popen.stdout对象获取最后N行

[英]How to get the last N lines from an unlimited Popen.stdout object

我正在尝试从当前的无限Popen.stdout对象获取最后N行。 无限,我的意思是无限/很多日志条目将被写入标准输出。 我尝试按时间限制尝试Popen.stdout.readline(),但这只会产生大量随机问题,尤其是输出很少的情况。 当前输出的某种快照可以帮助我,但是我找不到类似的东西。 我主要找到的所有解决方案都是针对终止的外部进程,但是我的是一个服务器应用程序,在我读完最后几行后应该可以将其写入stdout。

问候,

法尔比特

在Unix上,当您启动进程时,可以先将其通过管道传递给tail

p=subprocess.Popen("your_process.sh | tail --lines=3", stdout=subprocess.PIPE, shell=True)
r=p.communicate()
print r[0]

shell=True用法是这里的关键。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM