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支持断点续传的多线程下载示例
Jan 16 Python
python使用cPickle模块序列化实例
Sep 25 Python
python处理大数字的方法
May 27 Python
详解Python中的Cookie模块使用
Jul 06 Python
Python调用系统底层API播放wav文件的方法
Aug 11 Python
Python使用PIL模块生成随机验证码
Nov 21 Python
python如何统计序列中元素
Jul 31 Python
python统计字母、空格、数字等字符个数的实例
Jun 29 Python
使用python实现抓取腾讯视频所有电影的爬虫
Apr 15 Python
Python CategoricalDtype自定义排序实现原理解析
Sep 11 Python
用python写一个带有gui界面的密码生成器
Nov 06 Python
使用Python获取爱奇艺电视剧弹幕数据的示例代码
Jan 12 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计算加权平均数的方法
2015/07/16 PHP
实例讲解通过​PHP创建数据库
2019/01/20 PHP
laravel框架分组控制器和分组路由实现方法示例
2020/01/25 PHP
Nginx+php配置文件及原理解析
2020/12/09 PHP
javascript面向对象之Javascript 继承
2010/05/04 Javascript
EasyUI中实现form表单提交的示例分享
2015/03/01 Javascript
总结JavaScript的正则与其他语言的不同之处
2016/08/25 Javascript
jQuery实现Select下拉列表进行状态选择功能
2017/03/30 jQuery
深究AngularJS之ui-router详解
2017/06/13 Javascript
Angular整合zTree的示例代码
2018/01/24 Javascript
js实现购物车功能
2018/06/12 Javascript
React Native基础入门之调试React Native应用的一小步
2018/07/02 Javascript
JS如何把字符串转换成json
2020/02/21 Javascript
使用Python中的cookielib模拟登录网站
2015/04/09 Python
Win7下Python与Tensorflow-CPU版开发环境的安装与配置过程
2018/01/04 Python
Python实现的用户登录系统功能示例
2018/02/05 Python
python虚拟环境迁移方法
2019/01/03 Python
python切片(获取一个子列表(数组))详解
2019/08/09 Python
浅谈python元素如何去重,去重后如何保持原来元素的顺序不变
2020/02/28 Python
Python实现进度条和时间预估的示例代码
2020/06/02 Python
【HTML5】3D模型--百行代码实现旋转立体魔方实例
2016/12/16 HTML / CSS
H5页面适配iPhoneX(就是那么简单)
2019/12/02 HTML / CSS
澳大利亚婴儿礼品公司:The Baby Gift Company
2018/11/04 全球购物
L*SPACE官网:比基尼、泳装和度假服装
2019/03/18 全球购物
Yahoo的PHP面试题
2014/05/26 面试题
建筑总经理岗位职责
2014/02/02 职场文书
财务科科长岗位职责
2014/03/10 职场文书
经济职业学院毕业生自荐书
2014/03/17 职场文书
村容村貌整治方案
2014/05/21 职场文书
娱乐节目策划方案
2014/06/10 职场文书
信访稳定工作汇报
2014/10/27 职场文书
户外亲子活动总结
2015/05/08 职场文书
入党转正申请报告
2015/05/15 职场文书
青春雷锋观后感
2015/06/10 职场文书
培训计划通知
2015/07/15 职场文书
Python进度条的使用
2021/05/17 Python