Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Using python-watchdog to monitor a folder, but when I rename a file, I haven't been able to find a way to see the new filename

Renaming a file that is being monitored in watchdog produces a on_moved event trigger. The problem I'm having is that there is no way to tell what the file was moved/renamed to (as the on_moved event trigger also happens when a file was renamed). Is there any way this is built into watchdog or should I build a workaround in the program I'm writing?

Here's some sample code

#!/usr/bin/python
'''
Created on 2014-07-03
'''

import sys
import time

from watchdog.observers import Observer
from watchdog.events import FileSystemEventHandler

'''
Extend FileSystemEventHandler to be able to write custom on_any_event method
'''
class MyHandler(FileSystemEventHandler):
    '''
    Overwrite the methods for creation, deletion, modification, and moving
    to get more information as to what is happening on output
    '''
    def on_created(self, event):
        print("created: " + event.src_path)

    def on_deleted(self, event):
        print("deleted: " + event.src_path)

    def on_modified(self, event):
        print("modified: " + event.src_path)

    def on_moved(self, event):
        print("moved/renamed: " + event.src_path)


watch_directory = sys.argv[1]       # Get watch_directory parameter

event_handler = MyHandler()

observer = Observer()
observer.schedule(event_handler, watch_directory, True)
observer.start()

'''
Keep the script running or else python closes without stopping the observer
thread and this causes an error.
'''
try:
    while True:
        time.sleep(1)
except KeyboardInterrupt:
    observer.stop()
observer.join()

The code prints out whenever an event happens, which type of event happened and the path to the file/folder. It takes one parameters which is the path to the folder to be watched.

like image 544
Luis F Hernandez Avatar asked Feb 13 '23 14:02

Luis F Hernandez


1 Answers

if you don't know what are the methods and properties an object have just do print dir(obj) here in your case event.dest_path will do the work

like image 64
Joseph Thomas Avatar answered May 22 '23 03:05

Joseph Thomas