Heim >Backend-Entwicklung >Python-Tutorial >Wie kann ich Dateiänderungen in Python ohne Abfrage effizient überwachen?
Problem:
Sie haben eine Protokolldatei, die von einem anderen Prozess geschrieben wurde, den Sie überwachen möchten für Veränderungen. Immer wenn eine Änderung auftritt, müssen Sie die neuen Daten zur Verarbeitung lesen.
Hintergrund:
Sie haben darüber nachgedacht, die win32file.FindNextChangeNotification-Funktion der PyWin32-Bibliothek zu verwenden, sind sich aber nicht sicher, wie das geht Konfigurieren Sie es, um eine bestimmte Datei anzusehen.
Lösung: Einführung Watchdog
Anstelle von Polling ist die Verwendung der Watchdog-Bibliothek eine effizientere Option. So geht's:
import watchdog.observers import watchdog.events class MyEventHandler(watchdog.events.FileSystemEventHandler): def on_modified(self, path, metadata): # Read the modified log file and perform necessary processing # Create a Watchdog observer observer = watchdog.observers.Observer() # Add the log file path to be watched observer.schedule(MyEventHandler(), "path/to/log_file") # Start observing observer.start() # Wait indefinitely for changes observer.join()
Hinweis:
Wenn Sie eine Datei über ein zugeordnetes Netzlaufwerk überwachen, „hört“ Windows Aktualisierungen der Datei möglicherweise nicht wie auf einem lokale Festplatte. Erwägen Sie in solchen Szenarien einen anderen Ansatz.
Das obige ist der detaillierte Inhalt vonWie kann ich Dateiänderungen in Python ohne Abfrage effizient überwachen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!