zl程序教程

您现在的位置是:首页 >  后端

当前栏目

Python监控Windows下的文件变化

2023-09-11 14:14:44 时间


windows下监控文件系统的变化。用python非常方便。实例代码例如以下,非常easy。也不多说了。


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"))




相关參考链接:

http://docs.activestate.com/activepython/2.4/pywin32/win32file__ReadDirectoryChangesW_meth.html

http://docs.activestate.com/activepython/2.5/pywin32/win32file__CreateFile_meth.html