python 监视文件目录
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 监视文件目录相关推荐
- splunk 监视文件目录_使用Splunk监视Corda节点
splunk 监视文件目录 介绍 (Introduction) Creating a great CorDapp doesn't stop at writing elaborate contract ...
- Python监视电子邮箱并提示收到新邮件
代码功能:程序运行后,提示输入电子邮箱账号和密码,然后模拟登录.获取最新邮件ID.退出的操作,如果有新邮件则进行提示. 参考代码: ----------喜大普奔---------- 1.董付国老师Py ...
- Python监视用户计算机桌面窗口焦点的变化情况
代码运行后,可以实时监视用户计算机桌面上拥有焦点的窗口,如果焦点有切换就会给出提示. from ctypes import * from time import sleep from datetime ...
- python 的文件目录拷贝转移,自动递归目录建立目录
2019独角兽企业重金招聘Python工程师标准>>> #!/usr/bin/env python # -*- coding: utf-8 -*- # Created by weil ...
- 【Python】 文件目录比较工具filecmp和difflib
在一些运维场景中,常常需要比较两个环境中的应用目录结构(是否有文件/目录层面上的增删)以及比较两个环境中同名文件内容的不同(即文件层面上的改).Python自带了两个内建模块可以很好地完成这个工作,f ...
- python遍历文件目录_python目录遍历
广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 我曾经写了c语言的遍历目录.php的遍历目录,今天来说一下python遍历目录, ...
- python之文件目录和路径
1.路径中不要出现中文,否则有极大可能报错 2.反斜杠问题 举例说明: 我们从Windows复制的文件路径是G:\beifen\Tea. 可以看到,路径用的是反斜杠:\. 由于反斜杠\在python里 ...
- python监视键盘_关于键盘监视的库pyHook与pythoncom
最近写个小软件,写到程序的启动快捷键与关闭快捷键的时候. 参考了师傅的代码,发现他用的库是pyHook与pythoncom,pip安装报错. 百度查验了好久用尽了各种方法终是没能如愿 主要有几点原因 ...
- python的模块提供了许多文件处理方法_详解使用Python处理文件目录的相关方法
所有文件都包含在各个不同的目录下,不过Python也能轻松处理.os模块有许多方法能帮你创建,删除和更改目录. mkdir()方法 可以使用os模块的mkdir()方法在当前目录下创建新的目录们.你需 ...
最新文章
- gc的原因 频繁full_系统缓慢+CPU 100%+频繁Full GC问题的定位排查思路!
- Ioc的推荐实现方式
- 任务管理器显示不全 - 确定谁占用了我们的端口
- [数据库] SQL语句select简单记录总结
- Eclipse调试Logcat类的说明
- Java数据结构—基本数据类型
- 红帽linux无法进入tty,linux自启脚本(以及无法进入tty控制台)
- .NET Core 3.0预览版7中的ASP.NET Core和Blazor更新
- Java Web应用小案例:猜数小游戏
- OGRE 1.7.2 [Cthugha] 编译方法
- 年薪百万是社会认同,更是自身价值体现
- django migrate无效的解决方法
- PHP往doc中插入图片
- 通过抓包攻破人脸识别系统:安全问题存疑
- 阿里云CDN产品介绍
- 数据结构课程设计之排序综合
- visual studio 下载地址和安装方法
- TOM企业邮箱注册流程是什么,如何开通邮箱
- 写信中“敬启者”与“敬启”的区别
- Excel文件解析和结果回写
热门文章
- 【python】集合的定义与操作
- 【测试】禅道搭建在服务器上的操作步骤
- selenium+unittest自动化测试(一)---环境搭建及用例编写规则
- xml引入约束示例(xsd文件)
- 软件测试—软件测试基础知识—(三)软件测试的原则和(四)软件测试策略
- 增删改数据库表中的字段名
- php 图片服务器搭建,php图像裁剪服务器搭建
- 前端当前是否处在一个糟糕的时代?
- 腐蚀rust高速箭怎么做不了_高速公路波形护栏板安装时的设置要求
- 二元函数最大最小值定理证明_代数基本定理,用复数证明所有多项式函数都有根...