python多线程监控指定目录

import win32file
import tempfile
import threading
import win32con
import os

dirs=["C:\\WINDOWS\\TEMP",tempfile.gettempdir()]
def start_monitor(path_to_watch):
    h_directory = win32file.CreateFile(path_to_watch, win32con.GENERIC_READ ,
                                  win32con.FILE_SHARE_DELETE|win32con.FILE_SHARE_READ|win32con.FILE_SHARE_WRITE ,
                                  None , win32con.OPEN_EXISTING , win32con.FILE_FLAG_BACKUP_SEMANTICS , None )
    while True:
        try:
            results = win32file.ReadDirectoryChangesW(h_directory,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)
            for action, filename in results:
                print action
                print filename
        except:
            pass

for path in dirs:
    monitor_thread = threading.Thread(target=start_monitor,args=(path,))
    monitor_thread.start()

python多线程监控指定目录,主要函数是

win32file.ReadDirectoryChangesW监控目录变化

ReadDirectoryChangesW(handle, size, bWatchSubtree, dwNotifyFilter, overlapped)

retrieves information describing the changes occurring within a directory.

Parameters

handle : PyHANDLE

Handle to the directory to be monitored. This directory must be opened with the FILE_LIST_DIRECTORY access right.

size : int

Size of the buffer to allocate for the results.

bWatchSubtree : int

Specifies whether the ReadDirectoryChangesW function will monitor the directory or the directory tree. If TRUE is specified, the function monitors the directory tree rooted at the specified directory. If FALSE is specified, the function monitors only the directory specified by the hDirectory parameter.

dwNotifyFilter : int

Specifies filter criteria the function checks to determine if the wait operation has completed. This parameter can be one or more of the FILE_NOTIFY_CHANGE_* values.

overlapped=None : PyOVERLAPPED

An overlapped object. The directory must also be opened with FILE_FLAG_OVERLAPPED.

时间: 2024-12-20 20:24:35

python多线程监控指定目录的相关文章

使用WatchService监控指定目录内的文件的改动

package coin; import java.io.IOException; import java.nio.file.FileSystems; import java.nio.file.Path; import java.nio.file.StandardWatchEventKinds; import java.nio.file.WatchEvent; import java.nio.file.WatchKey; import java.nio.file.WatchService; /*

用python查找在指定目录下特定文件夹下的指定文件

本代码是在python2.*上边所写. 功能:在指定目录下查找特定文件夹下的特定文件. 实例:查找在packages目录下文件夹名为values下的strings.xml文件 #!/usr/bin/env python import os def walk_dir(path): filter_file_name = 'strings.xml' for root, dirs, files in os.walk(path): for dir_item in dirs: if dir_item ==

python批量修改指定目录文件名

这小例子只要是说明用python怎么批量修改指定目录的文件名: 记得要把脚本跟修改的文件放在同一个目录下 #encoding:utf-8 import os import sys files = os.listdir('D:\\1') #路径可以自己 for name in files: a = os.path.splitext(name) if a[1] == '.txt': #txt可以自己手动修改成你想改的文件名 newname = a[0]+'.py' #.py也是可以修改 print

[Erlang_Question27]如何监控指定目录下的*.beam文件,如果有改动就更新到指定的节点?

在Erlang In Anger第二章中讲到使用rebar来创建一个Erlang项目(Application或Project) 但美中不足的只是给出了指引,但没有给出详细的步骤. 下面我们就使用rebar一步步来创建一个典型的Application. 但在此之前,最好先理解下Erlang In Anger中第二章节所讲关于application结构的部分:http://zhongwencool.gitbooks.io/erlang_in_anger/ 通过本小节,你可以了解使用rebar加入开源

VC++ 监控指定目录改变

转载:http://www.cnblogs.com/doublesnke/archive/2011/08/16/2141374.html VC++实施文件监控:实例和详解 相关帮助: http://hi.baidu.com/jiahaosoft/blog/item/b441d1218eebece0d6cae274.html 我这里只介绍采用ReadDirectoryChangesW对文件目录实施监控 关键代码 CfgdsgDlg * dlg = (CfgdsgDlg*)lparam;     H

linux下python安装到指定目录

由于使用公司服务器时没有root权限,只能把python安装到个人文件夹下,使用源码包方式安装,这里记录一下. 1.python下载 cd到目录/users/w,在此目录下安装python.通过wget命令下载python源码包: $ wget https://www.python.org/ftp/python/2.7.9/Python-2.7.9.tgz 2.解压python到当前目录 $ tar zxvf Python-2.7.9.tar.xz 3.编译与安装 a)./configure -

python之对指定目录文件夹的批量重命名

import os,shutil,string dir = "/Users/lee0oo0/Documents/python/test" #指定的目录 for i in os.listdir(dir): #遍历指定目录的文件 newfile = i.replace('a','b') # 替换 oldname = dir +'/'+str(i) newname = dir +'/'+str(newfile) shutil.move(oldname,newname) # 重命名 print

python——查询linux指定目录下所有的空目录

1 #!/usr/bin/env python3 2 # -*- coding: utf-8 -*- 3 #*******查询指定目录中的空目录********* 4 #执行方法:python3 04-1.py + 目录名称 5 # a/b/c/f 6 # a/b/f 7 # a/b/r/1.txt 8 # python3 1.py a 9 # --> a/b/c/f 10 # a/b/f 11 import sys 12 import os, os.path 13 14 def find(p)

python之删除指定目录指定日期下的日志文件

#=======================================================================================20190521以下脚本是通过读取excle路径删除应路进下的日志==============================================================# -*- coding:utf-8 -*-# ! /usr/bin/python# defaultencoding = 'utf-8