2019独角兽企业重金招聘Python工程师标准>>>

该例子为用watchdog来监视新文件,当新文件来时候,调用相应的解析脚本,进行解析入库。

目录:

-scripts

--脚本1.py

--脚本2.py

-tmp

--已处理的文件1,

--已处理的文件2

config.py

watchdog.py

watchdog.py 文件,该业务只监听新文件创建的事件:

# coding=utf8
import sys
import time
import logging
import imp
import re
import scripts.CONFIG
from watchdog.observers import Observer
from watchdog.events import LoggingEventHandler
from watchdog.events import FileSystemEventHandlerclass CreatedEventHandler(FileSystemEventHandler):def __init__(self):FileSystemEventHandler.__init__(self)def on_created(handler,event):file_name = event.src_path[2:]print '--'+file_namemoduleName = ''for key in parse_map.keys():if(re.match(key,file_name)):moduleName = parse_map[key]breakif(moduleName != ''):try:#动态加载相应的moduleparseModule =  imp.load_module(moduleName,*imp.find_module(moduleName,['./scripts/']))print '  load module: ' + moduleNameparseModule.parse(file_name)except Exception,e:print e#正则匹配,将文件match到相应的解析脚本上
parse_map={'^test.xlsx$':'test','^emt_finance.*\.xlsx':'emt_finance'
}if __name__ == "__main__":logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(message)s',datefmt='%Y-%m-%d %H:%M:%S')path = sys.argv[1] if len(sys.argv) > 1 else '.'event_handler = CreatedEventHandler()observer = Observer()observer.schedule(event_handler, path, recursive=False)observer.start()print 'Watching...'try:while True:time.sleep(1)except KeyboardInterrupt:observer.stop()observer.join()

解析脚本test.py

# FileName: test.py
# a simple test code
import xlrd
import MySQLdb
import datetime
import os
import stat
import shutildef parse(file):values = []if(file.split('.')[-1] != 'xlsx'):print '---skip' + filereturntry:data = xlrd.open_workbook(file)table = data.sheets()[0]for i in range(1,table.nrows):row = table.row_values(i)#excel date is the days from 1899/12/30row[0] = datetime.date(1899,12,30) + datetime.timedelta(row[0])values.append(row)except Exception,e:print e#print valuestry:conn = MySQLdb.connect(config.mysql_host,config.mysql_user,config.mysql_passwd,'test',config.mysql_port)cur = conn.cursor()#values[0][5]=4for v in values:count = cur.execute('replace into testtable values(%s,%s,%s,%s,%s,%s)',v)conn.commit()print '  parse complete.''''results=cur.fetchmany(5)for r in results:print r'''cur.close()conn.close()#os.remove('tmp/test.pyc')if(os.path.exists('tmp/'+file)):os.chmod('tmp/'+file,stat.S_IWRITE)#去掉只读属性os.remove('tmp/'+file) #删除它shutil.move(file,'tmp/')print '  move filt to temp: ' + fileprint '  success!'except MySQLdb.Error,e:print "Mysql Error %d: %s" % (e.args[0], e.args[1])if __name__ == '__main__':exec "import CONFIG as config"print '=='*10#os.remove('../tmp/test.xlsx')#shutil.move('../test.xlsx','tmp/')#parse('../test.xlsx')
else:exec "import scripts.CONFIG as config"

转载于:https://my.oschina.net/u/867090/blog/345443

python 监视文件目录相关推荐

  1. splunk 监视文件目录_使用Splunk监视Corda节点

    splunk 监视文件目录 介绍 (Introduction) Creating a great CorDapp doesn't stop at writing elaborate contract ...

  2. Python监视电子邮箱并提示收到新邮件

    代码功能:程序运行后,提示输入电子邮箱账号和密码,然后模拟登录.获取最新邮件ID.退出的操作,如果有新邮件则进行提示. 参考代码: ----------喜大普奔---------- 1.董付国老师Py ...

  3. Python监视用户计算机桌面窗口焦点的变化情况

    代码运行后,可以实时监视用户计算机桌面上拥有焦点的窗口,如果焦点有切换就会给出提示. from ctypes import * from time import sleep from datetime ...

  4. python 的文件目录拷贝转移,自动递归目录建立目录

    2019独角兽企业重金招聘Python工程师标准>>> #!/usr/bin/env python # -*- coding: utf-8 -*- # Created by weil ...

  5. 【Python】 文件目录比较工具filecmp和difflib

    在一些运维场景中,常常需要比较两个环境中的应用目录结构(是否有文件/目录层面上的增删)以及比较两个环境中同名文件内容的不同(即文件层面上的改).Python自带了两个内建模块可以很好地完成这个工作,f ...

  6. python遍历文件目录_python目录遍历

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 我曾经写了c语言的遍历目录.php的遍历目录,今天来说一下python遍历目录, ...

  7. python之文件目录和路径

    1.路径中不要出现中文,否则有极大可能报错 2.反斜杠问题 举例说明: 我们从Windows复制的文件路径是G:\beifen\Tea. 可以看到,路径用的是反斜杠:\. 由于反斜杠\在python里 ...

  8. python监视键盘_关于键盘监视的库pyHook与pythoncom

    最近写个小软件,写到程序的启动快捷键与关闭快捷键的时候. 参考了师傅的代码,发现他用的库是pyHook与pythoncom,pip安装报错. 百度查验了好久用尽了各种方法终是没能如愿 主要有几点原因 ...

  9. python的模块提供了许多文件处理方法_详解使用Python处理文件目录的相关方法

    所有文件都包含在各个不同的目录下,不过Python也能轻松处理.os模块有许多方法能帮你创建,删除和更改目录. mkdir()方法 可以使用os模块的mkdir()方法在当前目录下创建新的目录们.你需 ...

最新文章

  1. gc的原因 频繁full_系统缓慢+CPU 100%+频繁Full GC问题的定位排查思路!
  2. Ioc的推荐实现方式
  3. 任务管理器显示不全 - 确定谁占用了我们的端口
  4. [数据库] SQL语句select简单记录总结
  5. Eclipse调试Logcat类的说明
  6. Java数据结构—基本数据类型
  7. 红帽linux无法进入tty,linux自启脚本(以及无法进入tty控制台)
  8. .NET Core 3.0预览版7中的ASP.NET Core和Blazor更新
  9. Java Web应用小案例:猜数小游戏
  10. OGRE 1.7.2 [Cthugha] 编译方法
  11. 年薪百万是社会认同,更是自身价值体现
  12. django migrate无效的解决方法
  13. PHP往doc中插入图片
  14. 通过抓包攻破人脸识别系统:安全问题存疑
  15. 阿里云CDN产品介绍
  16. 数据结构课程设计之排序综合
  17. visual studio 下载地址和安装方法
  18. TOM企业邮箱注册流程是什么,如何开通邮箱
  19. 写信中“敬启者”与“敬启”的区别
  20. Excel文件解析和结果回写

热门文章

  1. 【python】集合的定义与操作
  2. 【测试】禅道搭建在服务器上的操作步骤
  3. selenium+unittest自动化测试(一)---环境搭建及用例编写规则
  4. xml引入约束示例(xsd文件)
  5. 软件测试—软件测试基础知识—(三)软件测试的原则和(四)软件测试策略
  6. 增删改数据库表中的字段名
  7. php 图片服务器搭建,php图像裁剪服务器搭建
  8. 前端当前是否处在一个糟糕的时代?
  9. 腐蚀rust高速箭怎么做不了_高速公路波形护栏板安装时的设置要求
  10. 二元函数最大最小值定理证明_代数基本定理,用复数证明所有多项式函数都有根...