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 get获取页面cookie代码实例
Sep 12 Python
Python3多线程基础知识点
Feb 19 Python
5款Python程序员高频使用开发工具推荐
Apr 10 Python
Django框架实现的分页demo示例
May 25 Python
python查看文件大小和文件夹内容的方法
Jul 08 Python
Python3将数据保存为txt文件的方法
Sep 12 Python
pytorch 模拟关系拟合——回归实例
Jan 14 Python
pyecharts动态轨迹图的实现示例
Apr 17 Python
Python装饰器结合递归原理解析
Jul 02 Python
Python用SSH连接到网络设备
Feb 18 Python
Django 如何实现文件上传下载
Apr 08 Python
Python 流媒体播放器的实现(基于VLC)
Apr 28 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设计模式 Adapter(适配器模式)
2011/06/26 PHP
php给每个段落添加空格的方法
2015/03/20 PHP
PHP获取当前相对于域名目录的方法
2015/06/26 PHP
如何使用php实现评委评分器
2015/07/31 PHP
php正则匹配文章中的远程图片地址并下载图片至本地
2015/09/29 PHP
PHP实现Markdown文章上传到七牛图床的实例内容
2020/02/11 PHP
php下的原生ajax请求用法实例分析
2020/02/28 PHP
div+css布局的图片连续滚动js实现代码
2010/05/04 Javascript
js 利用image对象实现图片的预加载提高访问速度
2013/03/29 Javascript
javascript客户端遍历控件与获取父容器对象示例代码
2014/01/06 Javascript
javascript 对象数组根据对象object key的值排序
2015/03/09 Javascript
浅谈js中的this问题
2017/08/31 Javascript
微信小程序中吸底按钮适配iPhone X方案
2017/11/29 Javascript
浅谈react受控组件与非受控组件(小结)
2018/02/09 Javascript
webpack 单独打包指定JS文件的方法
2018/02/22 Javascript
layDate插件设置开始和结束时间
2018/11/15 Javascript
Vuerouter的beforeEach与afterEach钩子函数的区别
2018/12/26 Javascript
Vue开发环境中修改端口号的实现方法
2019/08/15 Javascript
vue使用一些外部插件及样式的配置代码
2019/11/18 Javascript
Python中类型检查的详细介绍
2017/02/13 Python
python用opencv批量截取图像指定区域的方法
2019/01/24 Python
python matplotlib实现双Y轴的实例
2019/02/12 Python
Python的UTC时间转换讲解
2019/02/26 Python
如何利用Anaconda配置简单的Python环境
2019/06/24 Python
Python爬虫HTPP请求方法有哪些
2020/06/03 Python
韩国女装NO.1网店:STYLENANDA
2016/09/16 全球购物
华三通信H3C面试题
2015/05/15 面试题
机械工程师求职自我评价
2013/09/23 职场文书
工程总经理工作职责
2013/12/09 职场文书
教育课题研究自我鉴定范文
2013/12/28 职场文书
信息专业大学生自我评价分享
2014/01/17 职场文书
教师节商场活动方案
2014/02/13 职场文书
沙滩主题婚礼活动策划方案
2014/09/15 职场文书
李强为自己工作观后感
2015/06/11 职场文书
Pytorch 使用tensor特定条件判断索引
2021/04/08 Python
Python控制台输出俄罗斯方块移动和旋转功能
2021/04/18 Python