如何获取子进程的最后 N 行? stderr 流输出?
我是一名 Python 新手,正在编写一个 Python (2.7) 脚本,该脚本需要执行许多外部应用程序,其中一个应用程序将大量输出写入其 stderr 流。我试图找出一种简洁明了的方法(在 Python 中)从该子进程的 stderr 输出流中获取最后 N 行。
目前,我正在从我的 Python 脚本运行该外部应用程序,如下所示:
p = subprocess.Popen('/path/to/external-app.sh', stdout=subprocess.PIPE, stderr=subprocess.PIPE)
stdout, stderr = p.communicate()
if p.returncode != 0:
print "ERROR: External app did not complete successfully (error code is " + str(p.returncode) + ")"
print "Error/failure details: ", stderr
status = False
else:
status = True
我想从其 stderr 流中捕获最后 N 行输出,以便可以将它们写入日志文件或通过电子邮件发送等。
I am a Python newbie writing a Python (2.7) script that needs to exec a number of external applications, one of which writes a lot of output to its stderr stream. What I am trying to figure out is a concise and succinct way (in Python) to get the last N lines from that subprocess' stderr output stream.
Currently, I am running that external application from my Python script like so:
p = subprocess.Popen('/path/to/external-app.sh', stdout=subprocess.PIPE, stderr=subprocess.PIPE)
stdout, stderr = p.communicate()
if p.returncode != 0:
print "ERROR: External app did not complete successfully (error code is " + str(p.returncode) + ")"
print "Error/failure details: ", stderr
status = False
else:
status = True
I'd like to capture the last N lines of output from its stderr stream so that they can be written to a log file or emailed, etc.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
如果整个输出无法存储在 RAM 中,则:
If the whole output can't be stored in RAM then: