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)
JavaScript
x
45
45
1
import time
2
from watchdog.observers import Observer
3
from watchdog.events import FileSystemEventHandler
4
5
6
class OnMyWatch:
7
# Set the directory on watch
8
watchDirectory = "/give / the / address / of / directory"
9
10
def __init__(self):
11
self.observer = Observer()
12
13
def run(self):
14
event_handler = Handler()
15
self.observer.schedule(event_handler, self.watchDirectory, recursive = True)
16
self.observer.start()
17
try:
18
while True:
19
time.sleep(5)
20
except:
21
self.observer.stop()
22
print("Observer Stopped")
23
24
self.observer.join()
25
26
27
class Handler(FileSystemEventHandler):
28
29
@staticmethod
30
def on_any_event(event):
31
if event.is_directory:
32
return None
33
34
elif event.event_type == 'created':
35
# Event is created, you can process it now
36
print("Watchdog received created event - % s." % event.src_path)
37
elif event.event_type == 'modified':
38
# Event is modified, you can process it now
39
print("Watchdog received modified event - % s." % event.src_path)
40
41
42
if __name__ == '__main__':
43
watch = OnMyWatch()
44
watch.run()
45
It works fine but the problem is it works in loop.
Advertisement
Answer
Here’s a more simpler:
JavaScript
1
14
14
1
import os
2
path=r'yourpath'
3
b=os.listdir(path)
4
path_len_org=int(len(b))
5
while True:
6
b=os.listdir(path)
7
path_len_final=int(len(b))
8
if path_len_org<path_len_final:
9
print("A file is added")
10
break
11
if path_len_org>path_len_final:
12
print("A file is removed")
13
break
14