1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > python看门狗(watchdog) 多线程 实现文件夹实时监听 日志输出 备份

python看门狗(watchdog) 多线程 实现文件夹实时监听 日志输出 备份

时间:2020-06-30 05:33:49

相关推荐

python看门狗(watchdog) 多线程 实现文件夹实时监听 日志输出 备份

python看门狗(watchdog)、多线程、实现文件夹实时监听、日志输出、备份

代码展示

import _threadfrom watchdog.observers import Observerfrom watchdog.events import FileSystemEventHandlerimport timeimport shutilfrom xml.dom.minidom import parseimport datetime as dtimport osimport logging# 第一步,创建一个loggerlogger = logging.getLogger()logger.setLevel(logging.INFO) # Log等级总开关# 第二步,创建一个handler,用于写入日志文件rq = time.strftime('%Y%m%d%H%M', time.localtime(time.time()))log_path = os.path.dirname(os.getcwd()) + '/dycktozslogs/'log_name = log_path + rq + '.log'logfile = log_namefh = logging.FileHandler(logfile, mode='w')fh.setLevel(logging.DEBUG) # 输出到file的log等级的开关# 第三步,定义handler的输出格式formatter = logging.Formatter("%(asctime)s - %(filename)s[line:%(lineno)d] - %(levelname)s: %(message)s")fh.setFormatter(formatter)# 第四步,将logger添加到handler里面logger.addHandler(fh)class MyDirEventHandler(FileSystemEventHandler):def on_moved(self, event):print(event)def on_created(self, event):_thread.start_new_thread(copy_remove_file, (event,))def on_deleted(self, event):print(event)def on_modified(self, event):print("modified:", event)# 移动、备份报文def copy_remove_file(event):time.sleep(6)try:# 年year = dt.datetime.now().strftime('%G')# 月month = dt.datetime.now().strftime('%m')# 日day = dt.datetime.now().strftime('%d')# 配置备份目录路径path ="D:\\Backup"path = os.path.join(path, year)path = os.path.join(path, month)path = os.path.join(path, day)# 判断备份路径是否存在if os.path.exists(path):try:shutil.copy(event.src_path, path)except shutil.Error:logger.error("备份文件出错,文件被占用:" + event.src_path)returnelse:try:os.makedirs(path)except Exception:logger.error("当文件已存在,无法创建该文件:" + path+"--报文路径:"+event.src_path)finally:try:shutil.copy(event.src_path, path)except shutil.Error:logger.error("备份文件出错,文件被占用:" + event.src_path)returntry:# 将文件移动到部署文凭文件夹zspath = "D:\\test2"if os.path.exists(zspath):shutil.move(event.src_path, zspath)else:try:os.makedirs(zspath)except Exception:logger.error("当文件已存在,无法创建该文件:" + path+"--报文路径:"+event.src_path)finally:shutil.move(event.src_path, zspath)except shutil.Error:logger.error("移动文件出错,文件已经存在:" + event.src_path)returnlogger.info("增加文件的文件夹路径:" + event.src_path)except Exception as err:logger.error("程序运行报错了:" + event.src_path+",报错内容:"+err)return"""使用watchdog 监控文件的变化"""if __name__ == '__main__':# 创建观察者对象observer = Observer()# 创建事件处理对象fileHandler = MyDirEventHandler()# 为观察者设置观察对象与处理事件对象observer.schedule(fileHandler, "D:\\test1", True)observer.start()try:while True:time.sleep(2)except KeyboardInterrupt:print("500程序错误,文移动失败。")passobserver.join()

效果展示

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。