Python 中的尾部日誌檔案
問:是否有一種非阻塞或鎖定的方式來在Python 中尾部日誌文件,類似於命令尾-F?雖然有較舊的方法,但有更好的解決方案或程式庫嗎?
A:非阻塞:
在Linux 上,利用子程序和選擇模組提供了非阻塞解決方案:
import time import subprocess import select f = subprocess.Popen(['tail','-F',filename],\ stdout=subprocess.PIPE,stderr=subprocess.PIPE) p = select.poll() p.register(f.stdout) while True: if p.poll(1): print f.stdout.readline() time.sleep(1)
此解決方案輪詢輸出管道以獲取新數據並立即顯示它。您可以使用自訂功能取代 time.sleep(1) 和 print f.stdout.readline()。
阻塞:
對於阻塞方法,您可以使用沒有附加模組的子程序模組:
import subprocess f = subprocess.Popen(['tail','-F',filename],\ stdout=subprocess.PIPE,stderr=subprocess.PIPE) while True: line = f.stdout.readline() print line
此方法也會在新方法行出現時會列印它們,但會停止執行直到尾部程序終止(例如,透過f.kill())。
以上是如何在Python中不阻塞地追蹤日誌檔?的詳細內容。更多資訊請關注PHP中文網其他相關文章!