Ich versuche, ein Skript zu schreiben, das eine bestimmte Protokolldatei für die Änderung überwacht, aber ich kann es nicht sehen, TXT-Dateien zu sehen. Es funktioniert gut mit anderen Dateitypen.Python Watchdog - src_path inkonsistent
from watchdog.observers import Observer
from watchdog.events import FileSystemEventHandler
from os.path import expanduser
file_to_watch = 'test.txt'
class FileModifiedHandler(FileSystemEventHandler):
def __init__(self, path, file_name, callback):
self.file_name = file_name
self.callback = callback
self.observer = Observer()
self.observer.schedule(self, path, recursive=False)
self.observer.start()
self.observer.join()
def on_modified(self, event):
print "Event: %s" % (event)
print "Ends with %s: %s" % (self.file_name, event.src_path.endswith(self.file_name))
if not event.is_directory and event.src_path.endswith(self.file_name):
self.callback()
if __name__ == '__main__':
def callback():
print("FILE WAS MODIFIED")
FileModifiedHandler('.', file_to_watch, callback)
Als ich eingestellt file_to_watch auf eine Py-Datei, kehrt das Protokoll des korrekten Quellenpfad, aber wenn ich es in eine TXT-Datei im selben Ordner zu ändern, hält es im Verzeichnis. Ich bin mir nicht sicher, was der Grund dafür ist. Hier ist, was das Programm kehrt:
Event: <FileModifiedEvent: src_path='/Users/nick/Documents/Python/WatchdogTest.py'>
Ends with WatchdogTest.py: True
FILE WAS MODIFIED
Event: <DirModifiedEvent: src_path='/Users/nick/Documents/Python'>
Ends with test.txt: False
Ich löste das Problem. Ich habe den Code getestet, indem ich TextEdit (auf Mac) geändert habe, aber wenn ich in einem anderen Texteditor (ich habe Brackets) geändert habe, hat es angefangen zu arbeiten. Vielleicht speichert TextEdit eine neue Datei, anstatt die vorhandene zu ändern? –