I want to create a program that detects a change in a particular dictionary and if the change is there starts the next code.
By the help of Google found this code: (below is greeksforgeeks code)
import time from watchdog.observers import Observer from watchdog.events import FileSystemEventHandler class OnMyWatch: # Set the directory on watch watchDirectory = "/give / the / address / of / directory" def __init__(self): self.observer = Observer() def run(self): event_handler = Handler() self.observer.schedule(event_handler, self.watchDirectory, recursive = True) self.observer.start() try: while True: time.sleep(5) except: self.observer.stop() print("Observer Stopped") self.observer.join() class Handler(FileSystemEventHandler): @staticmethod def on_any_event(event): if event.is_directory: return None elif event.event_type == 'created': # Event is created, you can process it now print("Watchdog received created event - % s." % event.src_path) elif event.event_type == 'modified': # Event is modified, you can process it now print("Watchdog received modified event - % s." % event.src_path) if __name__ == '__main__': watch = OnMyWatch() watch.run()
It works fine but the problem is it works in loop.
Advertisement
Answer
Here’s a more simpler:
import os path=r'yourpath' b=os.listdir(path) path_len_org=int(len(b)) while True: b=os.listdir(path) path_len_final=int(len(b)) if path_len_org<path_len_final: print("A file is added") break if path_len_org>path_len_final: print("A file is removed") break