当前位置: 首页 > news >正文

python定时扫描文件夹、多线程、日志输出、文件备份

python定时扫描文件夹、多线程、日志输出、文件备份

代码展示

#coding=utf-8
import _thread
import time
import shutil
import datetime as dt
import logging
import os
from threading import Timer
import datetime
import _thread
import time
import shutil
from xml.dom.minidom import parse
import datetime as dt
import os
import logginglogger = logging.getLogger()
logger.setLevel(logging.INFO)rq = time.strftime('%Y%m%d%H%M', time.localtime(time.time()))
log_path = os.path.dirname(os.getcwd()) + '/opt/data/log/dycktozslogs/'
log_name = log_path + rq + '.log'
logfile = log_name
fh = logging.FileHandler(logfile, mode='w')
fh.setLevel(logging.DEBUG)formatter = logging.Formatter("%(asctime)s - %(filename)s[line:%(lineno)d] - %(levelname)s: %(message)s")
fh.setFormatter(formatter)logger.addHandler(fh)# 移动、备份报文
def copy_remove_file(srcpath):time.sleep(6)try:global domTreetry:domTree = parse(srcpath)except BaseException:logger.error("xml文件解释错误:" + srcpath)returnrootNode = domTree.documentElementSenderId = rootNode.getElementsByTagName("dxp:SenderId")if SenderId.length > 0:data = SenderId[0].childNodes[0].datayear = dt.datetime.now().strftime('%G')month = dt.datetime.now().strftime('%m')day = dt.datetime.now().strftime('%d')path = os.path.join("/opt/data/backup/", data)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(srcpath, path)except shutil.Error:logger.error("备份文件出错,文件被占用:" + srcpath)returnelse:try:os.makedirs(path)except Exception:logger.error("当文件已存在,无法创建该文件:" + path + "--报文路径:" + srcpath)finally:try:shutil.copy(srcpath, path)except shutil.Error:logger.error("备份文件出错,文件被占用:" + srcpath)returntry:zspath = os.path.join("/opt/data/component/send", data)if os.path.exists(zspath):shutil.move(srcpath, zspath)else:try:os.makedirs(zspath)except Exception:logger.error("当文件已存在,无法创建该文件:" + path + "--报文路径:" + srcpath)finally:shutil.move(srcpath, zspath)except shutil.Error:logger.error("移动文件出错,文件已经存在:" + srcpath)returnlogger.info("增加文件的文件夹路径:" + srcpath)else:logger.error("报文格式不正确:" + srcpath)except Exception as err:logger.error("程序运行报错了:" + srcpath + ",报错内容:" + err)returndef initTask():print('TimeNow:%s' % (datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')))for root, dirs, files in os.walk("/opt/data/component/dyck/fromDYCK"):for file in files:_thread.start_new_thread(copy_remove_file, (os.path.join(root, file),))print(os.path.join(root, file))# 3表示线程延迟3秒t = Timer(3, initTask)t.start()if __name__ == "__main__":initTask()

http://www.mrgr.cn/news/27898.html

相关文章:

  • JAVA接入WebScoket行情接口
  • 31-Shard Allocation Awareness(机架感知)
  • Spring Boot框架:电商系统的技术革新
  • uni-app移动端与PC端兼容预览PDF文件
  • 01 P2367 语文成绩
  • 发布rust crate
  • 八、动态规划-算法总结
  • 刘润《关键跃升》读书笔记9
  • 深度学习笔记(6)文本分类
  • Python中匹配HTML标签时<.*>和<.*?>有什么区别
  • 顺序栈和链栈
  • 828华为云征文 | 华为云Flexus X实例柔性算力助力中小企业和开发者
  • 【最佳实践】配置类封装-Async异步注解以及自定义线程池
  • python多线程程序设计 之二
  • 第十一章 【后端】商品分类管理微服务(11.2)——Lombok
  • 常见饮料和食物的碳水含量
  • Golang | Leetcode Golang题解之第409题最长回文串
  • Python | Leetcode Python题解之第409题最长回文串
  • 读构建可扩展分布式系统:方法与实践05分布式缓存
  • 进程和线程(JAVA基础)
  • (MySQL、Redis)数据库的连接、启动和关闭的常用命令
  • 【人工智能】复刻抖音爆款AI数字人视频初体验
  • Android14音频进阶之如何集成音效(八十五)
  • Java | Leetcode Java题解之第409题最长回文串
  • NISP 一级 | 5.4 数据安全
  • Linux进阶 把用户加入和移除用户组