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开发微信支付的注意事项
Aug 19 Python
django中的HTML控件及参数传递方法
Mar 20 Python
pandas apply 函数 实现多进程的示例讲解
Apr 20 Python
pycharm 将django中多个app放到同个文件夹apps的处理方法
May 30 Python
分析python请求数据
Aug 19 Python
Python中typing模块与类型注解的使用方法
Aug 05 Python
使用matplotlib绘制图例标签中带有公式的图
Dec 13 Python
python使用SQLAlchemy操作MySQL
Jan 02 Python
python实现文件+参数发送request的实例代码
Jan 05 Python
python+selenium实现12306模拟登录的步骤
Jan 21 Python
使用bandit对目标python代码进行安全函数扫描的案例分析
Jan 27 Python
Python IO文件管理的具体使用
Mar 20 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
discuz 首页四格:最新话题+最新回复+热门话题+精华文章插件
2007/08/19 PHP
php实现基于微信公众平台开发SDK(demo)扩展的方法
2014/12/22 PHP
smarty内置函数section的用法
2015/01/22 PHP
PHP观察者模式示例【Laravel框架中有用到】
2018/06/15 PHP
使弱类型的语言JavaScript变强势
2009/06/22 Javascript
JavaScript与Div对层定位和移动获得坐标的实现代码
2010/09/08 Javascript
JavaScript中的undefined学习总结
2013/11/30 Javascript
简单介绍JavaScript中字符串创建的基本方法
2015/07/07 Javascript
JavaScript新增样式规则(推荐)
2016/07/19 Javascript
关于jquery中动态增加select,事件无效的快速解决方法
2016/08/29 Javascript
微信小程序 登录的简单实现
2017/04/19 Javascript
详解JS数据类型的值拷贝函数(深拷贝)
2017/07/13 Javascript
使用JS中的Replace()方法遇到的问题小结
2017/10/20 Javascript
Bootstrap实现可折叠分组侧边导航菜单
2018/03/07 Javascript
官方推荐react-navigation的具体使用详解
2018/05/08 Javascript
Python中类的继承代码实例
2014/10/28 Python
python Selenium爬取内容并存储至MySQL数据库的实现代码
2017/03/16 Python
对Python捕获控制台输出流的方法详解
2019/01/07 Python
Python实现查找二叉搜索树第k大的节点功能示例
2019/01/24 Python
使用TensorFlow实现简单线性回归模型
2019/07/19 Python
python Popen 获取输出,等待运行完成示例
2019/12/30 Python
Python生成词云的实现代码
2020/01/14 Python
opencv 图像加法与图像融合的实现代码
2020/07/08 Python
Python开发入门——迭代的基本使用
2020/09/03 Python
CSS3 @font-face属性使用指南
2014/12/12 HTML / CSS
小学优秀教育工作者事迹材料
2014/05/09 职场文书
办公室主任竞聘演讲稿
2014/05/15 职场文书
机电专业毕业生求职信
2014/07/01 职场文书
小区的门卫岗位职责
2014/10/01 职场文书
小学科学教学计划
2015/01/21 职场文书
爱鸟护鸟的宣传语
2015/07/13 职场文书
多人股份制合作协议书
2016/03/19 职场文书
Css预编语言及区别详解
2021/04/25 HTML / CSS
ajax请求前端跨域问题原因及解决方案
2021/10/16 Javascript
MySQL8.0升级的踩坑历险记
2021/11/01 MySQL
Linux中如何安装并部署Redis
2022/04/18 Servers