watchdog monitoring file for changes

前端 未结 2 537
北海茫月
北海茫月 2020-12-07 09:38

I have a need to watch a log file for changes. After looking through stackoverflow questions, I see people recommending watchdog. So I\'m trying to test, and

相关标签:
2条回答
  • 2020-12-07 09:49

    Instead of LoggingEventHandler define your handler:

    #!/usr/bin/python
    import time
    from watchdog.observers import Observer
    from watchdog.events import FileSystemEventHandler
    
    
    class MyHandler(FileSystemEventHandler):
        def on_modified(self, event):
            print(f'event type: {event.event_type}  path : {event.src_path}')
    
    
    if __name__ == "__main__":
        event_handler = MyHandler()
        observer = Observer()
        observer.schedule(event_handler, path='/data/', recursive=False)
        observer.start()
    
        try:
            while True:
                time.sleep(1)
        except KeyboardInterrupt:
            observer.stop()
        observer.join()
    

    on_modified is called when a file or directory is modified.

    0 讨论(0)
  • 2020-12-07 09:51

    Here's a snippet to prevent it running twice as others have commented in @alecxe answer:

    from datetime import datetime, timedelta
    
    class MyHandler(FileSystemEventHandler):
        def __init__(self):
            self.last_modified = datetime.now()
    
        def on_modified(self, event):
            if datetime.now() - self.last_modified < timedelta(seconds=1):
                return
            else:
                self.last_modified = datetime.now()
            print(f'Event type: {event.event_type}  path : {event.src_path}')
            print(event.is_directory) # This attribute is also available
    
    0 讨论(0)
提交回复
热议问题