Python持续监听文件变化代码实例


Posted in Python onJuly 22, 2020

在日常的工作中,有时候会有这样的需求,需要一个常驻任务,持续的监听一个目录下文件的变化,对此作出回应.

pyinotify就是这样的一个python包,使用方式如下:

一旦src.txt有新的内容,程序就可以监控到,然后将内容发送

import socket
import pyinotify
pos = 0


def send(c):
  c_list = [c]
  s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
  s.connect(('127.0.0.1', 10001))
  print(s.recv(1024).decode('utf-8'))
  for data in c_list:
    s.send(data)
    print(s.recv(1024).decode('utf-8'))
  s.send(b'exit')
  s.close()


def printlog():
  global pos
  try:
    fd = open("src.txt")
    if pos != 0:
      fd.seek(pos, 0)
    while True:
      line = fd.readline()
      if line.strip():
        send(line.strip().encode('utf8'))
      pos = pos + len(line)
      if not line.strip():
        break
    fd.close()
  except Exception as e:
    print(str(e))


class MyEventHandler(pyinotify.ProcessEvent):

  # 当文件被修改时调用函数
  def process_IN_MODIFY(self, event):
    try:
      printlog()
    except Exception as e:
      print(str(e))
if __name__ == '__main__':
  printlog()
  # watch manager
  wm = pyinotify.WatchManager()
  wm.add_watch('/home/ubuntu/data-sync/s3', pyinotify.ALL_EVENTS, rec=True)
  eh = MyEventHandler()

  # notifier
  notifier = pyinotify.Notifier(wm, eh)
  notifier.loop()

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python远程桌面协议RDPY安装使用介绍
Apr 15 Python
python通过邮件服务器端口发送邮件的方法
Apr 30 Python
python利用装饰器进行运算的实例分析
Aug 04 Python
python 利用for循环 保存多个图像或者文件的实例
Nov 09 Python
Python中的集合介绍
Jan 28 Python
python实现的生成word文档功能示例
Aug 23 Python
django实现支付宝支付实例讲解
Oct 17 Python
Python处理mysql特殊字符的问题
Mar 02 Python
python生成xml时规定dtd实例方法
Sep 21 Python
Django如何使用asyncio协程和ThreadPoolExecutor多线程
Oct 12 Python
python源文件的字符编码知识点详解
Mar 04 Python
python源码剖析之PyObject详解
May 18 Python
Python不支持 i ++ 语法的原因解析
Jul 22 #Python
基于selenium及python实现下拉选项定位select
Jul 22 #Python
Python实现手绘图效果实例分享
Jul 22 #Python
Selenium及python实现滚动操作多种方法
Jul 21 #Python
如何在mac版pycharm选择python版本
Jul 21 #Python
python如何变换环境
Jul 21 #Python
零基础学Python之前需要学c语言吗
Jul 21 #Python
You might like
php下intval()和(int)转换使用与区别
2008/07/18 PHP
ThinkPHP模板引擎之导入资源文件方法详解
2014/06/18 PHP
PHP+Memcache实现wordpress访问总数统计(非插件)
2014/07/04 PHP
jquery+php实现导出datatables插件数据到excel的方法
2015/07/06 PHP
使用PHP编写发红包程序
2015/07/22 PHP
JS JavaScript获取Url参数,src属性参数
2021/03/09 Javascript
js 实现css风格选择器(压缩后2KB)
2012/01/12 Javascript
浅谈JavaScript Array对象
2014/12/29 Javascript
基于jQuery实现自动轮播旋转木马特效
2015/11/02 Javascript
js将json格式的对象拼接成复杂的url参数方法
2016/05/25 Javascript
indexedDB bootstrap angularjs之 MVC DOMO (应用示例)
2016/06/20 Javascript
Angular和百度地图的结合实例代码
2016/10/19 Javascript
Bootstrap 3.x打印预览背景色与文字显示异常的解决
2016/11/06 Javascript
详解JS中遍历语法的比较
2017/04/07 Javascript
微信小程序实现图片轮播及文件上传
2017/04/07 Javascript
解决Linux无法正常安装与卸载Node.js的方法
2018/01/19 Javascript
微信小程序模版渲染详解
2018/01/26 Javascript
聊聊JS动画库 Velocity.js的使用
2018/03/13 Javascript
vue 界面刷新数据被清除 localStorage的使用详解
2018/09/16 Javascript
vue项目使用axios发送请求让ajax请求头部携带cookie的方法
2018/09/26 Javascript
TypeScript类型声明书写详解
2019/08/28 Javascript
JS实现选项卡插件的两种写法(jQuery和class)
2020/12/30 jQuery
JS实现简易日历效果
2021/01/25 Javascript
[58:58]2018DOTA2亚洲邀请赛 4.4 淘汰赛 TNC vs VG 第二场
2018/04/05 DOTA
python使用matplotlib画饼状图
2018/09/25 Python
python实现计数排序与桶排序实例代码
2019/03/28 Python
python如何调用php文件中的函数详解
2020/12/29 Python
浅谈Selenium+Webdriver 常用的元素定位方式
2021/01/13 Python
python使用Windows的wmic命令监控文件运行状况,如有异常发送邮件报警
2021/01/30 Python
解决python的空格和tab混淆而报错的问题
2021/02/26 Python
canvas中普通动效与粒子动效的实现代码示例
2019/01/03 HTML / CSS
凌阳科技股份有限公司C++程序员面试题笔试题
2014/11/20 面试题
雅虎笔试题(字符串操作)
2015/03/24 面试题
幼儿园大班毕业感言
2014/02/06 职场文书
广告宣传策划方案
2014/05/21 职场文书
Golang 实现超大文件读取的两种方法
2021/04/27 Golang