Python監控Windows下的文件變化

jopen 11年前發布 | 52K 次閱讀 Python Python開發

windows下監控文件系統的變化,用python很方便。

相關參考鏈接:

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

http://docs.activestate.com/activepython/2.5/pywin32/win32file__CreateFile_meth.html
    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"))  

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!