使用python时刻中监控文件夹,记录文件夹中文件异常信息

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: 使用python时刻中监控文件夹,记录文件夹中文件异常信息

watchdog库简述

Watchdog是一款用于监控文件系统事件的Python库,Watchdog优先使用底层原生API,其次再通过轮询磁盘实现监控,支持多平台操作系统;使用watchdog时,当被监视的区域发生文件或目录的创建,修改,或者删除时,就可以引发特定的事件,我们只需要编写针对这些事件的函数即可处理这些变化。

python版本支持 3.5+

官方网站地址:https://pythonhosted.org/watchdog/

扩展知识:

watchdog翻译为看门狗。看门狗是一个概念,单片机和linux中也都有watchdog的应用,例如Linux 自带了一个 watchdog 的实现,用于监视系统的运行,包括一个内核 watchdog module 和一个用户空间的 watchdog 程序。

watchdog是一个python的第三方库,使用前需要进行安装;

安装watchdog

安装方式推荐有很多种,推荐使用pip;

pip 是 Python 的包安装程序。其实,pip 就是 Python 标准库(The Python Standard Library)中的一个包,只是这个包比较特殊,用它可以来管理 Python 标准库(The Python Standard Library)中其他的包。pip 是一个命令行程序。 安装 pip 后,会向系统添加一个 pip 命令,该命令可以从命令提示符运行。

安装pip:

  • 安装python; 这个是必须安装的;
  • 下载pip:

    > 官网地址:https://pypi.org/project/pip/#downloads; 下载完毕后,解压
    • 打开命令行窗口,进入到pip解压后的目录;执行代码

      python3 setup.py install
      进行安装,
      安装完成后,将pip加入到系统环境变量中
  • 验证
    打开命令行窗口,输入pip list 或者pip3 list

在这里插入图片描述

以上只针对于windows系统,其他系统也可以参考;

  • pip安装完成后,就可以使用pip安装watchdog:
    打开命令行窗口,输入执行以下代码,并回车

    pip install watchdog

    等待提示安装成功既可;

使用watchdog实现一个记录文件夹文件操作的日志

代码实现:

导入watchdog:

import watchdog

记录日志,需要一个日志库logging,

导入 import logging
  • 首先定义一个日志处理器:
from watchdog import events,
class loghendler(events.LoggingEventHandler):
    
    def on_created(self, event):
        super().on_created(event)
        name =event.src_path.split('.')
        if name[-1] == 'mp4':
            logging.info('filename: %s',event.src_path)
            sleep(3)
            os.remove(event.src_path)

日志处理器继承watchdog的事件处理器events.LoggingEventHandler
重写on_created方法,文件被创建时触发;

  • 创建监控对象,
from watchdog import observers
#配置输出日志
logging.basicConfig(level=logging.INFO,
format='%(asctime)s - %(message)s',
datefmt='%Y-%m-%d %H:%M:%S')
path = 'H:/sounds'
#定义一个事件处理器
#handler_file = events.LoggingEventHandler()
handler_file = loghendler()
#实例化一个监控对象
ob = observers.Observer()
ob.schedule(handler_file,path,recursive=True)
#启动一个线程运行监控
ob.start()
while 1:
    sleep(1)

配置日志输出格式,实例化一个监控对象observers;启动一个线程来监控;

watchdog主要采用观察者模型。主要机制是,observer不断检测调用平台依赖代码对监控文件夹进行变动检测,当发现改变时,通知event_handler处理。
里面主要的三个参与者:文件夹,观察者observer和event_hander;

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
13天前
|
存储 运维 监控
探索局域网电脑监控软件:Python算法与数据结构的巧妙结合
在数字化时代,局域网电脑监控软件成为企业管理和IT运维的重要工具,确保数据安全和网络稳定。本文探讨其背后的关键技术——Python中的算法与数据结构,如字典用于高效存储设备信息,以及数据收集、异常检测和聚合算法提升监控效率。通过Python代码示例,展示了如何实现基本监控功能,帮助读者理解其工作原理并激发技术兴趣。
50 20
|
20天前
|
计算机视觉 Python
如何使用Python将TS文件转换为MP4
本文介绍了如何使用Python和FFmpeg将TS文件转换为MP4文件。首先需要安装Python和FFmpeg,然后通过`subprocess`模块调用FFmpeg命令,实现文件格式的转换。代码示例展示了具体的操作步骤,包括检查文件存在性、构建FFmpeg命令和执行转换过程。
37 7
|
2月前
|
测试技术 开发者 Python
对于Python中的异常要如何处理,raise关键字你真的了解吗?一篇文章带你从头了解
`raise`关键字在Python中用于显式引发异常,允许开发者在检测到错误条件时中断程序流程,并通过异常处理机制(如try-except块)接管控制。`raise`后可跟异常类型、异常对象及错误信息,适用于验证输入、处理错误、自定义异常、重新引发异常及测试等场景。例如,`raise ValueError("Invalid input")`用于验证输入数据,若不符合预期则引发异常,确保数据准确并提供清晰错误信息。此外,通过自定义异常类,可以针对特定错误情况提供更具体的信息,增强代码的健壮性和可维护性。
|
2月前
|
Python
在Python中,`try...except`语句用于捕获和处理程序运行时的异常
在Python中,`try...except`语句用于捕获和处理程序运行时的异常
59 5
|
2月前
|
Python
在Python中,自定义函数可以抛出自定义异常
在Python中,自定义函数可以抛出自定义异常
53 5
|
2月前
|
存储 开发者 Python
自定义Python的异常
自定义Python的异常
23 5
|
2月前
|
开发者 Python
Python中__init__.py文件的作用
`__init__.py`文件在Python包管理中扮演着重要角色,通过标识目录为包、初始化包、控制导入行为、支持递归包结构以及定义包的命名空间,`__init__.py`文件为组织和管理Python代码提供了强大支持。理解并正确使用 `__init__.py`文件,可以帮助开发者更好地组织代码,提高代码的可维护性和可读性。
86 2
|
2月前
|
中间件 Docker Python
【Azure Function】FTP上传了Python Function文件后,无法在门户页面加载函数的问题
通过FTP上传Python Function至Azure云后,出现函数列表无法加载的问题。经排查,发现是由于`requirements.txt`中的依赖包未被正确安装。解决方法为:在本地安装依赖包到`.python_packages/lib/site-packages`目录,再将该目录内容上传至云上的`wwwroot`目录,并重启应用。最终成功加载函数列表。
|
Python
python 使用记录
元组比较: 1 >>> (0, 1, 2) < (0, 3, 4) 2 True 3 >>> (0, 1, 2000000) < (0, 3, 4) 4 True 列表的多字段排序: sorted_list = [ [1, 2, 3, 4, 5, 6, 7, 8],...
714 0
|
1月前
|
人工智能 数据可视化 数据挖掘
探索Python编程:从基础到高级
在这篇文章中,我们将一起深入探索Python编程的世界。无论你是初学者还是有经验的程序员,都可以从中获得新的知识和技能。我们将从Python的基础语法开始,然后逐步过渡到更复杂的主题,如面向对象编程、异常处理和模块使用。最后,我们将通过一些实际的代码示例,来展示如何应用这些知识解决实际问题。让我们一起开启Python编程的旅程吧!