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 相关文章推荐
Web服务器框架 Tornado简介
Jul 16 Python
python中使用pyhook实现键盘监控的例子
Jul 18 Python
Python多进程同步Lock、Semaphore、Event实例
Nov 21 Python
Python格式化css文件的方法
Mar 10 Python
简介Python设计模式中的代理模式与模板方法模式编程
Feb 02 Python
将python代码和注释分离的方法
Apr 21 Python
用python 实现在不确定行数情况下多行输入方法
Jan 28 Python
python实现两张图片的像素融合
Feb 23 Python
python+selenium实现自动化百度搜索关键词
Jun 03 Python
python中dict使用方法详解
Jul 17 Python
python并发编程 Process对象的其他属性方法join方法详解
Aug 20 Python
python爬虫 requests-html的使用
Nov 30 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处理json时中文问题的解决方法
2011/04/12 PHP
ThinkPHP的Widget扩展实例
2014/06/19 PHP
php把时间戳转换成多少时间之前函数的实例
2016/11/16 PHP
Yii2表单事件之Ajax提交实现方法
2017/05/04 PHP
js string 转 int 注意的问题小结
2013/08/15 Javascript
前端必备神器 Snap.svg 弹动效果
2014/11/10 Javascript
jQuery 回调函数(callback)的使用和基础
2015/02/26 Javascript
浅谈EasyUI中Treegrid节点的删除
2015/03/01 Javascript
jQuery.each使用详解
2015/07/07 Javascript
jquery实现鼠标经过显示下划线的渐变下拉菜单效果代码
2015/08/24 Javascript
浅析创建javascript对象的方法
2016/05/13 Javascript
es6的数字处理的方法(5个)
2017/03/16 Javascript
jQuery实现动态删除LI的方法
2017/05/30 jQuery
Node.js学习之TCP/IP数据通讯(实例讲解)
2017/10/11 Javascript
详解vue的diff算法原理
2018/05/20 Javascript
详解如何解决vue开发请求数据跨域的问题(基于浏览器的配置解决)
2018/11/12 Javascript
简述ES6新增关键字let与var的区别
2019/08/23 Javascript
python追加元素到列表的方法
2015/07/28 Python
解决Python字典写入文件出行首行有空格的问题
2017/09/27 Python
DES加密解密算法之python实现版(图文并茂)
2018/12/06 Python
如何更优雅地写python代码
2019/07/02 Python
500行代码使用python写个微信小游戏飞机大战游戏
2019/10/16 Python
MNIST数据集转化为二维图片的实现示例
2020/01/10 Python
python GUI库图形界面开发之PyQt5输入对话框QInputDialog详细使用方法与实例
2020/02/27 Python
使用python-Jenkins批量创建及修改jobs操作
2020/05/12 Python
python中PyQuery库用法分享
2021/01/15 Python
X/HTML5 和 XHTML2
2008/10/17 HTML / CSS
在html5的Canvas上绘制椭圆的几种方法总结
2013/01/07 HTML / CSS
HTML5触摸事件实现移动端简易进度条的实现方法
2018/05/04 HTML / CSS
德国汉莎航空中国官网: Lufthansa中国
2017/03/30 全球购物
一道SQL存储过程面试题
2016/10/07 面试题
劳资员岗位职责
2013/11/11 职场文书
广告宣传策划方案
2014/05/21 职场文书
安全目标管理责任书
2014/07/25 职场文书
预备党员自我批评思想汇报
2014/10/10 职场文书
2014幼儿园大班工作总结
2014/11/10 职场文书