我是一名Python新手,編寫需要執行大量外部應用程序的Python(2.7)腳本,其中一個應用程序將大量輸出寫入其stderr流。我試圖弄清楚的是一個簡潔而簡潔的方式(用Python)從該子進程的stderr輸出流中獲取最後N行。如何獲取子進程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
我想從它的標準錯誤流捕獲輸出的最後N行,使他們能夠被寫入日誌文件或電子郵件等
謝謝喲你 - 這個工作很好!一個跟進問題:如果我對匹配(即包含)特定字符串(例如「錯誤」)的最後N行感興趣,您將如何修改您的答案? – ssahmed555 2011-02-14 18:08:27