監控多文件夾目錄變化,python,win32

# -*- coding: utf-8 -*-
"""
Created on Tue Mar  3 21:40:33 2020
@author: HomeLocal
"""
import os
import threading
import win32file
import win32con

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

FILE_LIST_DIRECTORY = 0x0001


def simpleFuction(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, filename in results:
            full_filename = os.path.join(path_to_watch, filename)
            # full_filename=full_filename.decode('unicode_escape').encode('utf-8')
            print(full_filename, ACTIONS.get(action, "Unknown"))
# path_to_watch = 'D:\\file1'
# path_to_watch2 = 'D:\\file2'
# print('Watching changes in', path_to_watch)
# simpleFuction(path_to_watch)
path=["D:\\file1","D:\\file2"]
threads = []
for i in path:
    t1 = threading.Thread(target=simpleFuction,args=(i,))
    threads.append(t1)
for t in threads:
    t.setDaemon(True)
    t.start()

for t in threads:
    t.join()
# if __name__ == '__main__':

參看蟲師:python 多線程就這麼簡單 - 蟲師 - 博客園 (cnblogs.com)

忘了你的地址了,保留了原作者的名字:

author: HomeLocal
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章