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

相关参考链接:

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

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

时间: 2024-10-03 14:45:18

Python监控Windows下的文件变化的相关文章

java利用WatchService实时监控某个目录下的文件变化并按行解析(注:附源代码)

首先说下需求:通过ftp上传约定格式的文件到服务器指定目录下,应用程序能实时监控该目录下文件变化,如果上传的文件格式符合要求,将将按照每一行读取解析再写入到数据库,解析完之后再将文件改名. 一. 一开始的思路 设置一个定时任务,每隔一分钟读取下指定目录下的文件变化,如果有满足格式的文件,就进行解析. 这种方式很繁琐,而且效率低,效率都消耗在了遍历.保存状态.对比状态上了! 而且无法利用OS的很多功能. 二. WatchService介绍 1. 该类的对象就是操作系统原生的文件系统监控器!我们都知

python在windows下UnicodeDecodeError的解决方法

之前在windows下使用python调用某些模块时都会报错,像这样: C:\Documents and Settings\Administrator>python -m CGIHTTPServer Traceback (most recent call last): File "C:\Python27\lib\runpy.py", line 162, in _run_module_as_main "__main__", fname, loader, pkg_

python在windows下安装模块错误

我的环境是win7+vs2013+python3.2,都是32位 windows下安装模块错误 1)Unable to find vcvarsall.bat : 打开"<python安装目录>\Lib\distutils\msvc9compiler.py" 找到 toolskey = "VS%0.f0COMNTOOLS" % version, 直接修改为 toolskey = "VS100COMNTOOLS"  (如果是vs2012或

windows下修改文件时的换行符引起在linux运行不正常的解决

env: /etc/init.d/nginx: No such file or directory 原因:在windows下修改文件的时候换行符出的问题. windows和linux下的换行符是不同的.一般操作系统上的运行库会自动决定文本文件的换行格式. 如一个程序在windows上运行就生成CR/LF换行格式的文本文件,而在linux上运行就生成LF格式换行的文本文件. 在一个平台上使用另一种换行符的文件文件可能会带来意想不到的问题, 特别是在编辑程序代码时. 有时候代码在编辑器中显示正常,

将Windows下的文件同步到Linux下

需求:把Windows下的某些文件自动传送到Linux指定目录下 实现: 1. Windows下安装 WinSCP工具,并把Liunx服务器信息保存 2. 编写脚本,实现双击工具就把Windows下的文件上传到Linux下, ========================== copyFile.txt =====================================START=========== option echo offoption batch onoption confir

python 在windows下监听键盘按键

python 在windows下监听键盘按键 使用到的库 ctypes(通过ctypes来调用Win32API, 主要就是调用钩子函数) 使用的Win32API SetWindowsHookEx(), 将用户定义的钩子函数添加到钩子链中, 也就是我们的注册钩子函数 UnhookWindowsHookEx(), 卸载钩子函数 CallNextHookEx()在我们的钩子函数中必须调用, 这样才能让程序的传递消息 在没有钩子函数的情况下windows程序运行机制 键盘输入 --> 系统消息队列 --

python学习-windows下使用python27将合并多个xlsx文件

有时候需要处理很多报表,将一个目录下的所有excel格式报表合并,手工操作费事费力如果能使用python,将多个.xlsx同时能够合并多个excel表的话,多么方便. 1.windows上python配置 windows上安装的是python2.7,需要使用pip安装一些第三方包,所以需要配置一下.在linux上修改Pip源很简单,但是在windows上很麻烦,所以我就直接单次指定pip源下载包 #windows上pip执行路径为C:\Python27\Scripts pip install -

[Python]处理windows下多级目录文件,上传到Linux服务器

#-*- coding: utf-8 -*- __author__ = 'tsbc' import sys reload(sys) sys.setdefaultencoding('utf-8') import paramiko import os import time class Upload(): """ 上传每天生成的测试报告到Linux的web服务器. paramiko 包需要安装 /result/ 下存放html文件 /result/image 截图文件 "

python监控windows的CPU,Memory,Disk

有一批windows系统需要监控,无论是zabbix.nagios都需要安装相关插件,操作起来比较麻烦. python的psutil模块可以跨平台监控linux.windows.mac等,于是使用python写监控脚本,然后利用py2exe工具将其打包成exe后,直接将其放到windows下直接运行即可. 1.安装python2.7(32位) 在https://www.python.org/downloads/ 下载适合系统的python 安装后修改环境变量,"系统变量"----PAT