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获取指定网页上所有超链接的方法
Apr 04 Python
Python的Scrapy爬虫框架简单学习笔记
Jan 20 Python
搭建Python的Django框架环境并建立和运行第一个App的教程
Jul 02 Python
简单谈谈python中的lambda表达式
Jan 19 Python
python构建深度神经网络(DNN)
Mar 10 Python
Python函数中不定长参数的写法
Feb 13 Python
python找出列表中大于某个阈值的数据段示例
Nov 24 Python
Python如何爬取qq音乐歌词到本地
Jun 01 Python
浅谈keras通过model.fit_generator训练模型(节省内存)
Jun 17 Python
4种非常实用的python内置数据结构
Apr 28 Python
pytorch 中autograd.grad()函数的用法说明
May 12 Python
Python进程间的通信之语法学习
Apr 11 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.ini 中文版
2006/10/28 PHP
初级的用php写的采集程序
2007/03/16 PHP
Zend Framework连接Mysql数据库实例分析
2016/03/19 PHP
PHP文件系统管理(实例讲解)
2017/09/19 PHP
用javascript实现在小方框中浏览大图的代码
2007/08/14 Javascript
javascript函数以及基础写法100多条实用整理
2013/01/13 Javascript
js操作滚动条事件实例
2015/01/29 Javascript
JS实现统计复选框选中个数并提示确定与取消的方法
2015/07/01 Javascript
jquery+ajax实现注册实时验证实例详解
2015/12/08 Javascript
EasyUI框架 使用Ajax提交注册信息的实现代码
2017/09/27 Javascript
引入外部js脚本加载慢与页面白屏问题的解决
2018/12/10 Javascript
详解微信小程序文件下载--视频和图片
2019/04/24 Javascript
微信小程序之侧边栏滑动实现过程解析(附完整源码)
2019/08/23 Javascript
vue图片加载失败时用默认图片替换的方法
2019/08/29 Javascript
[02:28]DOTA2亚洲邀请赛附加赛 RECAP赛事回顾
2015/01/29 DOTA
[01:07]DOTA2次级职业联赛 - Fpb战队宣传片
2014/12/01 DOTA
打开电脑上的QQ的python代码
2013/02/10 Python
使用Python编写一个简单的tic-tac-toe游戏的教程
2015/04/16 Python
python实现输入数字的连续加减方法
2018/06/22 Python
Python实现监控Nginx配置文件的不同并发送邮件报警功能示例
2019/02/26 Python
使用sklearn的cross_val_score进行交叉验证实例
2020/02/28 Python
Pandas实现一列数据分隔为两列
2020/05/18 Python
python/golang 删除链表中的元素
2020/09/14 Python
python 使用csv模块读写csv格式文件的示例
2020/12/02 Python
CSS3+JavaScript实现炫酷呼吸效果的示例代码
2020/06/15 HTML / CSS
新西兰领先的鞋类和靴子网上商城:Merchant 1948
2017/09/08 全球购物
Nike墨西哥官网:Nike MX
2020/08/30 全球购物
上海天奕面试题笔试题
2015/04/19 面试题
授权委托书公证
2014/09/14 职场文书
卫校毕业生自我鉴定
2014/09/28 职场文书
汽车销售员岗位职责
2015/04/11 职场文书
干部培训简讯
2015/07/20 职场文书
大学迎新生欢迎词
2015/09/29 职场文书
给原生html中添加水印遮罩层的实现示例
2021/04/02 Javascript
go 原生http web 服务跨域restful api的写法介绍
2021/04/27 Golang
vue里使用create, mounted调用方法
2022/04/26 Vue.js