This little script (based on Tim Goldens work) runs only on windows and watches at low level into a givven directory. If any changes occur, it will immidiatly show you what has changed. I use it regularly to watch into a directory (works also with UNC pathes and samba) and follow, which files were modified. It watches into the complete directory tree with sub directories. Very simple, use it like this:
python.exe c:\temp\PathWatcher.py \\SRVXY\released_docs
import os, sys import win32file import win32con ACTIONS = { 1 : "Created", 2 : "Deleted", 3 : "Updated", 4 : "Renamed from something", 5 : "Renamed to something" } FILE_LIST_DIRECTORY = 0x0001 path_to_watch = sys.argv[1] print 'Watching changes in', path_to_watch hDir = win32file.CreateFile ( path_to_watch, FILE_LIST_DIRECTORY, win32con.FILE_SHARE_READ | win32con.FILE_SHARE_WRITE, None, win32con.OPEN_EXISTING, win32con.FILE_FLAG_BACKUP_SEMANTICS, None ) while 1: results = win32file.ReadDirectoryChangesW ( hDir, 1024, True, win32con.FILE_NOTIFY_CHANGE_FILE_NAME | win32con.FILE_NOTIFY_CHANGE_DIR_NAME | win32con.FILE_NOTIFY_CHANGE_ATTRIBUTES | win32con.FILE_NOTIFY_CHANGE_SIZE | win32con.FILE_NOTIFY_CHANGE_LAST_WRITE | win32con.FILE_NOTIFY_CHANGE_SECURITY, None, None ) for action, file in results: full_filename = os.path.join (path_to_watch, file) print full_filename, ACTIONS.get (action, "Unknown")
It’s a great post; however, it is plagiarized!
It would’ve been better if you would’ve provided a reference to the original code from Tim Golden:
Watch a Directory for Changes: http://timgolden.me.uk/python/win32_how_do_i/watch_directory_for_changes.html
Hope you show a well-deserved curtsy to Tim and add the necessary reference!
Thank you! Keep up your good work!
AG, you`re right. There are more posts based on Tim Goldens work, where he was mentioned. But I forgot it on this one. Corrected it.
Thanks for the hint