1. 程式人生 > >Python監控Windows下的檔案變化

Python監控Windows下的檔案變化

windows下監控檔案系統的變化,用python很方便。例項程式碼如下,很簡單,也不多說了。

import os
import win32file

import win32con


ACTIONS = {
  1 : "Created",
  2 : "Deleted",
  3 : "Updated",
  4 : "Renamed from something",
  5 : "Renamed to something"
}

FILE_LIST_DIRECTORY = win32con.GENERIC_READ | win32con.GENERIC_WRITE
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
)

if __name__ == '__main__':
    print("123")
    while 1:
        print("321")
        results = win32file.ReadDirectoryChangesW (
                                               hDir,  #handle: Handle to the directory to be monitored. This directory must be opened with the FILE_LIST_DIRECTORY access right.
                                               1024,  #size: Size of the buffer to allocate for the results.
                                               True,  #bWatchSubtree: Specifies whether the ReadDirectoryChangesW function will monitor the directory or the directory tree. 
                                               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"))


相關參考連結: