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系列之浅谈pickle模块封装和拆封数据对象的方法
May 23 Python
python列表操作之extend和append的区别实例分析
Jul 28 Python
python读取excel表格生成erlang数据
Aug 26 Python
python调用摄像头显示图像的实例
Aug 03 Python
详解关于Django中ORM数据库迁移的配置
Oct 08 Python
Python3安装pip工具的详细步骤
Oct 14 Python
Python netmiko模块的使用
Feb 14 Python
python GUI库图形界面开发之PyQt5窗口控件QWidget详细使用方法
Feb 26 Python
python计算导数并绘图的实例
Feb 29 Python
Django+RestFramework API接口及接口文档并返回json数据操作
Jul 12 Python
Python制作动态字符画的源码
Aug 04 Python
python基础之模块的导入
Oct 24 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
Snoopy类使用小例子
2008/04/15 PHP
Yii2-GridView 中让关联字段带搜索和排序功能示例
2017/01/21 PHP
IE中jquery.form中ajax提交没反应解决方法分享
2012/09/11 Javascript
九种js弹出对话框的方法总结
2013/03/12 Javascript
JS 各种网页尺寸判断实例方法
2013/04/18 Javascript
display和visibility的区别示例介绍
2014/02/26 Javascript
button没写type=button会导致点击时提交
2014/03/06 Javascript
jQuery 仿百度输入标签插件附效果图
2014/07/04 Javascript
7个让JavaScript变得更好的注意事项
2015/01/28 Javascript
jquery实现适用于门户站的导航下拉菜单效果代码
2015/08/24 Javascript
javascript同步服务器时间和同步倒计时小技巧
2015/09/24 Javascript
辨析JavaScript中的Undefined类型与null类型
2016/05/26 Javascript
angularJS 指令封装回到顶部示例详解
2017/01/22 Javascript
JavaScript实现前端实时搜索功能
2020/03/26 Javascript
Vue批量图片显示时遇到的路径被解析问题
2019/03/28 Javascript
vue-cli随机生成port源码的方法
2019/09/02 Javascript
原生js实现五子棋游戏
2020/05/28 Javascript
微信小程序语音同步智能识别的实现案例代码解析
2020/05/29 Javascript
Python FTP操作类代码分享
2014/05/13 Python
Python实现SSH远程登陆,并执行命令的方法(分享)
2017/05/08 Python
简单谈谈Python中的json与pickle
2017/07/19 Python
浅析PHP与Python进行数据交互
2018/05/15 Python
使用Python给头像戴上圣诞帽的图像操作过程解析
2019/09/20 Python
django框架cookie和session用法实例详解
2019/12/10 Python
基于keras输出中间层结果的2种实现方式
2020/01/24 Python
python不到50行代码完成了多张excel合并的实现示例
2020/05/28 Python
python解释器安装教程的方法步骤
2020/07/02 Python
Python实现图片查找轮廓、多边形拟合、最小外接矩形代码
2020/07/14 Python
CSS3中animation实现流光按钮效果
2020/12/21 HTML / CSS
HTML5之HTML元素扩展(上)—新增加的元素及使用概述
2013/01/31 HTML / CSS
Canvas图片分割效果的实现
2019/07/29 HTML / CSS
如何利用XMLHTTP检测URL及探测服务器信息
2013/11/10 面试题
学校三八妇女节活动情况总结
2014/03/09 职场文书
大学生村官承诺书
2014/03/28 职场文书
旅游与酒店管理专业求职信
2014/07/21 职场文书
win11开机发生死循环重启怎么办?win11开机发生死循环重启解决方法
2022/08/05 数码科技