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多线程和队列管理shell程序
Aug 04 Python
python3使用urllib模块制作网络爬虫
Apr 08 Python
Python生成密码库功能示例
May 23 Python
Python操作SQLite数据库的方法详解【导入,创建,游标,增删改查等】
Jul 11 Python
python实现雪花飘落效果实例讲解
Jun 18 Python
python打印直角三角形与等腰三角形实例代码
Oct 20 Python
Python numpy数组转置与轴变换
Nov 15 Python
Python+Redis实现布隆过滤器
Dec 08 Python
python图形界面开发之wxPython树控件使用方法详解
Feb 24 Python
python shell命令行中import多层目录下的模块操作
Mar 09 Python
django haystack实现全文检索的示例代码
Jun 24 Python
详解Python魔法方法之描述符类
May 26 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数组函数序列之array_combine() - 数组合并函数使用说明
2011/10/29 PHP
PHP开发工具ZendStudio下Xdebug工具使用说明详解
2013/11/11 PHP
php截取指定2个字符之间字符串的方法
2015/04/15 PHP
php实现三级级联下拉框
2016/04/17 PHP
PHP实现路由映射到指定控制器
2016/08/13 PHP
PHP与Web页面的交互示例详解一
2020/08/04 PHP
javascript提取URL的搜索字符串中的参数(自定义函数实现)
2013/01/22 Javascript
javascript获取设置div的高度和宽度兼容任何浏览器
2013/09/22 Javascript
页面定时刷新(1秒刷新一次)
2013/11/22 Javascript
javascript实现json页面分页实例代码
2014/02/20 Javascript
JQuery表单验证插件EasyValidator用法分析
2014/11/15 Javascript
JS+CSS实现分类动态选择及移动功能效果代码
2015/10/19 Javascript
JS判断浏览器是否安装flash插件的简单方法
2016/09/13 Javascript
解析JavaScript数组方法reduce
2016/12/12 Javascript
ES6学习笔记之Set和Map数据结构详解
2017/04/07 Javascript
Node.js 异步异常的处理与domain模块解析
2017/05/10 Javascript
解决vue-cli项目webpack打包后iconfont文件路径的问题
2018/09/01 Javascript
node和vue实现商城用户地址模块
2018/12/05 Javascript
js实现手表表盘时钟与圆周运动
2020/09/18 Javascript
[43:32]Winstrike vs VGJ.S 2018国际邀请赛淘汰赛BO3 第一场 8.23
2018/08/24 DOTA
利用Python读取文件的四种不同方法比对
2017/05/18 Python
详解利用python+opencv识别图片中的圆形(霍夫变换)
2019/07/01 Python
意大利独特而优质的家居用品:Fazzini
2018/12/05 全球购物
Craghoppers德国官网:户外和旅行服装
2020/02/14 全球购物
大学旷课检讨书
2014/01/28 职场文书
机关工会开展学习雷锋活动总结
2014/03/01 职场文书
篮球社团活动总结
2014/06/27 职场文书
幼儿园教师节感谢信
2015/01/23 职场文书
2015年人力资源工作总结
2015/04/08 职场文书
2015银行年终工作总结范文
2015/05/26 职场文书
房产销售员2015年终工作总结
2015/10/22 职场文书
求职自我评价参考范文
2019/05/16 职场文书
2019学校请假条格式及范文
2019/06/25 职场文书
nginx处理http请求实现过程解析
2021/03/31 Servers
MySQL 不等于的三种使用及区别
2021/06/03 MySQL
Win11 22H2 2022怎么更新? 获得Win1122H22022版本升级技巧
2022/09/23 数码科技