监测目录文件下文件的生成 修改

#coding=utf-8
import os,logging,ctypes
import win32file
import win32con
import logging
from logging.handlers import TimedRotatingFileHandler
from radar_operation import RADAR_OPERATION
RADAR_OPERATION = RADAR_OPERATION()

FOREGROUND_WHITE = 0x0007
FOREGROUND_BLUE = 0x01 # text color contains blue.
FOREGROUND_GREEN= 0x02 # text color contains green.
FOREGROUND_RED = 0x04 # text color contains red.
FOREGROUND_YELLOW = FOREGROUND_RED | FOREGROUND_GREEN
 
STD_OUTPUT_HANDLE= -11
std_out_handle = ctypes.windll.kernel32.GetStdHandle(STD_OUTPUT_HANDLE)
def set_color(color, handle=std_out_handle):
 bool = ctypes.windll.kernel32.SetConsoleTextAttribute(handle, color)
 return bool
 
class Logger:
    def __init__(self, path,clevel = logging.DEBUG,Flevel = logging.DEBUG):
      self.logger = logging.getLogger(path)
      self.logger.setLevel(logging.DEBUG)
      fmt = logging.Formatter(‘%(asctime)s->%(filename)s->%(module)s->%(lineno)d->%(levelname)s->%(message)s ‘, ‘%Y-%m-%d %H:%M:%S‘)
      #设置CMD日志
      sh = logging.StreamHandler()
      sh.setFormatter(fmt)
      sh.setLevel(clevel)
      #设置文件日志
      #fh = logging.FileHandler(path)
      fh = TimedRotatingFileHandler(filename=path, when="M", interval=30, backupCount=2)
      fh.setFormatter(fmt)
      fh.setLevel(Flevel)
      self.logger.addHandler(sh)
      self.logger.addHandler(fh)
 
    def debug(self,message):
      self.logger.debug(message)
 
    def info(self,message):
        self.logger.info(message)
 
    def war(self,message,color=FOREGROUND_YELLOW):
      set_color(color)
      self.logger.warn(message)
      set_color(FOREGROUND_WHITE)
 
    def error(self,message,color=FOREGROUND_RED):
      set_color(color)
      self.logger.error(message)
      set_color(FOREGROUND_WHITE)
 
    def cri(self,message):
        self.logger.critical(message)

def mymonitor(path_to_watch):
    ‘‘‘
    监控directory目录,对该目录下新曽或修改文件进行自动传输
    ‘‘‘
    logf = Logger("main.log",logging.WARNING,logging.DEBUG)

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

FILE_LIST_DIRECTORY = win32con.GENERIC_READ | win32con.GENERIC_WRITE
    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,  #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)
            if os.path.isfile(full_filename):
                print ‘=================================‘
                print ‘monited‘,full_filename,action
                logf.info(‘receive ‘+full_filename)
                # RADAR_OPERATION.Level3_products_from_single_radar(full_filename,"")
                try:
                    RADAR_OPERATION.test(full_filename)
                except:
                    print ‘-------------------‘
if __name__ == "__main__":
    path_to_watch = r"E:\radar_operation\test_bed\CIMISS_IN"
    mymonitor(path_to_watch)

时间: 2024-10-17 08:37:43

监测目录文件下文件的生成 修改的相关文章

python 获取文件下文件个数

import glob # path_file_number=glob.glob('D:/case/test/testcase/checkdata/*.py')#或者指定文件下个数 path_file_number=glob.glob(pathname='*.py') #获取当前文件夹下个数 print(path_file_number) print(len(path_file_number)) 原文地址:https://www.cnblogs.com/mahaining/p/10257314.

android开发步步为营之54:读取assets,raw文件夹下文件

一.读取assets文件下文件products.json public String readAssetFile(Context c, String file) { Elapsed profiler = new Elapsed(); BufferedReader bufReader = null; try { InputStreamReader inputReader = new InputStreamReader(c.getResources().getAssets().open(file))

[Erl_Question06]在Erlang shell怎么在目录A下编译目录B下的文件,并把生成文件统一放置目录C?

问题描述: 我们想快速测试一个小功能,第一个反应就是打开Erl shell 直接输入,但是当想测试一个复杂的函数时,一般会写成一个*.erl文件,然后在shell下: cd(FileDir). c(FileName). 每次都为一个小功能设置FileDir,好烦! 解决方法: 方法1 .  在erlang工作目录[在erl shell中运行pwd()显示的目录]建立一个.erlang文件,输入: io:format("changing work path~n"). cd("你

Linux下文件的三种时间标记:访问时间、修改时间、状态改动时间 (转载)

在windows下,一个文件有:创建时间.修改时间.访问时间. 而在Linux下,一个文件也有三种时间,分别是:访问时间.修改时间.状态改动时间. 两者有此不同,在Linux下没有创建时间的概念,也就是不能知道文件的建立时间,但如果文件建立后就没有修改过,修改时间=建立时间;如果文件建立后, 状态就没有改动过,那么状态改动时间=建立时间;如果文件建立后,没有被读取过,那么访问时间=建立时间,因为不好判断文件是否被改过.读过.其状态是否 变过,所以判断文件的建立时间基本上能为不可能. 如何查一个文

Android项目中gen文件下R文件无法生成的解决办法

帮一个网友解决R文件无法生成的问题,搜集了些材料特整理如下,初学者参考他人代码时极易出现此种问题,一般都是xml文件出错,无法被正确解析. gen目录无法更新,或者gen目录下的R.JAVA文件无法生成 1.gen目录的用处 android gen目录下的R.java并不是由用户创建,而是android工程本身将android的资源进行自动"编号"(ID)值. 2.gen目录下R文件无法更新/生成的原因 1)res目录下的layout下的xml文件名有错.按照android的命名规范是

计算沙盒下文件夹内容大小 清空沙盒 文件 目录

1 +(float)fileSizeForDir:(NSString*)path//计算文件夹下文件的总大小 2 3 { 4 5 NSFileManager *fileManager = [[NSFileManager alloc] init]; 6 7 float size =0; 8 9 NSArray* array = [fileManager contentsOfDirectoryAtPath:path error:nil]; 10 11 for(int i = 0; i<[array

修改Linux下的文件以及文件夹的权限

如何在Linux中管理文件和文件夹的权限? 2014-02-12 10:58 布加迪编译 51CTO 字号:T | T Linux系统有严格的权限管理制度,操作者权限与文件权限不匹配时将无法对文件进行任何操作.对许多Linux用户来说,习惯于文件的权限和所有权可能有点难度.本文从命令行开始入手,教您在Linux中管理文件和文件夹权限的方法. AD:51CTO学院:IT精品课程在线看! [51CTO精选译文]对许多Linux用户来说,习惯于文件的权限和所有权可能有点难度.人们通常认为,想进入到这种

[添加用户]解决useradd 用户后没有添加用户Home目录的情况,Linux改变文件或目录的访问权限命令,linux修改用户密码,usermod的ysuum安装包。飞

usermod的yum安装包: shadow-utils 将nobody用户添加到nogroup 组: usermod -g nogroup nobody cat /etc/passwd|grep nobody nobody:x:65534:65534:nobody:/var/lib/nobody:/bin/bash 第3个字段是65534:意思就是,UID(用户的ID)是500. 第4个字段是65534:意思就是.GID(用户的组ID)的500. 使用usermod -g nogroup no

Linux下查看文件大小和目录大小以及目录下文件的大小

在linux中经常会查看文件大小,通常用的命令du: 该命令详细解释如下: [[email protected] logs]$ du --help 用法:du [选项]... [文件]... 或:du [选项]... --files0-from=F 计算每个文件的磁盘用量,目录则取总用量. 长选项必须使用的参数对于短选项时也是必需使用的. -a, --all             输出所有文件的磁盘用量,不仅仅是目录 --apparent-size   显示表面用量,而并非是磁盘用量:虽然表面