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 print 输出文本显示 gbk 编码错误问题
Jul 13 Python
python发送告警邮件脚本
Sep 17 Python
python根据文章标题内容自动生成摘要的实例
Feb 21 Python
pycharm新建一个python工程步骤
Jul 16 Python
numpy中的meshgrid函数的使用
Jul 31 Python
python 批量修改 labelImg 生成的xml文件的方法
Sep 09 Python
如何基于Python批量下载音乐
Nov 11 Python
python 解决cv2绘制中文乱码问题
Dec 23 Python
Python基础类继承重写实现原理解析
Apr 03 Python
详解python的super()的作用和原理
Oct 29 Python
python3 使用ssh隧道连接mysql的操作
Dec 05 Python
python实现的人脸识别打卡系统
May 08 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
网页编辑器ckeditor和ckfinder配置步骤分享
2012/05/24 Javascript
javascript 快速排序函数代码
2012/05/30 Javascript
jquery对元素拖动排序示例
2014/01/16 Javascript
js Dialog 去掉右上角的X关闭功能
2014/04/23 Javascript
ie8模式下click无反应点击option无反应的解决方法
2014/10/11 Javascript
node.js中的socket.io的广播消息
2014/12/15 Javascript
javascript获取文档坐标和视口坐标
2015/05/26 Javascript
js实现不提交表单获取单选按钮值的方法
2015/08/21 Javascript
JavaScrip调试技巧之断点调试
2015/10/22 Javascript
JQuery实现的按钮倒计时效果
2015/12/23 Javascript
跨域资源共享 CORS 详解
2016/04/26 Javascript
JS定时器实现数值从0到10来回变化
2016/12/09 Javascript
Three.js基础部分学习
2017/01/08 Javascript
JS实现简单的浮动碰撞效果示例
2017/12/28 Javascript
微信小程序实现一张或多张图片上传(云开发)
2019/09/25 Javascript
js实现淘宝首页的banner栏效果
2019/11/26 Javascript
vue 通过base64实现图片下载功能
2020/12/19 Vue.js
[47:03]完美世界DOTA2联赛PWL S3 access vs LBZS 第一场 12.20
2020/12/23 DOTA
简介Python中用于处理字符串的center()方法
2015/05/18 Python
Tensorflow简单验证码识别应用
2017/05/25 Python
Python3.6实现连接mysql或mariadb的方法分析
2018/05/18 Python
python 子类调用父类的构造函数实例
2020/03/12 Python
Python requests.post方法中data与json参数区别详解
2020/04/30 Python
Python实现加密的RAR文件解压的方法(密码已知)
2020/09/11 Python
英国最出名高街品牌:Forever Unique
2018/02/24 全球购物
设计师珠宝:Ylang 23
2018/05/11 全球购物
CAD制图人员的自荐信
2014/02/07 职场文书
园艺专业毕业生求职信
2014/09/02 职场文书
党的群众路线教育实践活动个人整改方案
2014/10/25 职场文书
悬崖上的金鱼姬观后感
2015/06/15 职场文书
灵魂歌王观后感
2015/06/17 职场文书
浅析InnoDB索引结构
2021/04/05 MySQL
python实现语音常用度量方法的代码详解
2021/05/25 Python
Vue2.0搭建脚手架
2022/03/13 Vue.js
MySQL中优化SQL语句的方法(show status、explain分析服务器状态信息)
2022/04/09 MySQL
Python如何快速找到多个字典中的公共键(key)
2022/04/29 Python