Tailing von Protokolldateien mit Python
Man möchte oft eine Protokolldatei verfolgen oder sie auf andere Weise passiv beobachten, um den neuen hinzugefügten Inhalt anzuzeigen . Dies kann in Python auf verschiedene Arten erreicht werden.
Nicht blockierend
Für diesen Ansatz kann man den Unterprozess verwenden und Module auswählen.
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)
Dieser Code öffnet einen Unterprozess, der tail -F für die angegebene Datei ausführt, fragt seine Ausgabe nach neuen Daten ab und druckt sie aus, wenn sie verfügbar sind. Dieser Ansatz blockiert nicht das Hauptprogramm.
Blockierung
Ein einfacherer Blockierungsansatz ist verfügbar, wenn nur das Unterprozessmodul verwendet wird.
import subprocess f = subprocess.Popen(['tail', '-F', filename], stdout=subprocess.PIPE, stderr=subprocess.PIPE) while True: line = f.stdout.readline() print(line)
Dieser Code gibt auch neue Zeilen aus, wenn sie hinzugefügt werden, aber er wird blockiert, bis das Endprogramm geschlossen wird.
Das obige ist der detaillierte Inhalt vonWie man Protokolldateien in Python überwacht: Blockierend oder nicht blockierend?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!