I want to use watchdog for monitoring specific filename in directory for run specific python script.
for example:
First, I want to use watchdog for monitor all of .avi file.
If name of .avi file in path (C:/User/AAxxx/video/) is : ABxxx_11.avi, I want to run ABxxx_11.py
If name of .avi file in path (C:/User/BBxxx/video/) is : CDxxx_22.avi, I want to run CDxxx_22.py
If name of .avi file in path (C:/User/CCxxx/video/) is : EFxxx_33.avi, I want to run EFxxx_33.py
And I want to pass sub-folder directory of AAxxx, BBxxx amd CCxxx folder. I want to focus only .avi file.
Now I have only watchdog for monitor .avi file and run python only one script. please see as below.
from watchdog.observers import Observer
from watchdog.events import FileSystemEventHandler
from watchdog.events import PatternMatchingEventHandler
class Watcher:
def __init__(self, path, filename):
self.observer = Observer()
self.path = path
self.filename = filename
def run(self):
event_handler = Handler(self.filename)
self.observer.schedule(event_handler, self.path, recursive=True)
self.observer.start()
try:
while True:
time.sleep(1)
except:
self.observer.stop()
print("Error")
self.observer.join()
class Handler(PatternMatchingEventHandler):
def __init__(self, filename):
super(Handler, self).__init__(
patterns=[filename],
ignore_patterns=["*.tmp"],
ignore_directories=True,
case_sensitive=False,
)
def on_any_event(self, event):
print(
"[{}] noticed: [{}] on: [{}] ".format(
time.asctime(), event.event_type, event.src_path
)
)
#process1 = subprocess.Popen(["python", "ABxxx_11.py"])
if __name__ == "__main__":
path = "C:/Users/xxx/AAxxx/video/"
filename = "*.avi"
w = Watcher(path, filename)
w.run()
