返回

python监视文件夹内容变化情况实时响应

发布时间:2023-10-20 09:00:45 287


  • 我需要的功能是: 检测指定文件夹, 有变化则重新编译整个项目
  • 该脚本的功能是: 实时检测整个文件夹的变化, 并打印
  • 由于当我们修改一个文件时, 会出现读写打开关闭等多个事件发生,造成动一个文件就会重新编译多次项目, 为了解决这个问题, 增加了时间戳功能, 判断1s内不管发生多少事件都按照1个事件计算
  • 运行命令: ​​python monitor.py 项目文件夹/​
# monitor.py
#!/usr/bin/env python
#coding:utf-8
import sys
import pyinotify
import time
try:
path = sys.argv[1]
except:
raise(AttributeError("has no attribute path"))

class MyEvent(pyinotify.ProcessEvent):
def __init__(self):
super().__init__()
self.flag = time.time()

# 这里的事件处理函数还有很多, 可以去官网查看, 这是重写
def process_IN_MODIFY(self,event):
# 上次时间已经超过1s
if time.time() - self.flag > 1:
print("上次时间超过1s, 可以运行了")
print(path+event.name, " be change")
self.flag = time.time()
os.system('make test') # 这里就可以做想做的事情了

vm = pyinotify.WatchManager()
vm.add_watch(path,pyinotify.ALL_EVENTS,rec = True)
event = MyEvent()
notifier = pyinotify.Notifier(vm,event)
notifier.loop()

python监视文件夹内容变化情况实时响应_开发语言


特别声明:以上内容(图片及文字)均为互联网收集或者用户上传发布,本站仅提供信息存储服务!如有侵权或有涉及法律问题请联系我们。
举报
评论区(0)
按点赞数排序
用户头像
精选文章
thumb 中国研究员首次曝光美国国安局顶级后门—“方程式组织”
thumb 俄乌线上战争,网络攻击弥漫着数字硝烟
thumb 从网络安全角度了解俄罗斯入侵乌克兰的相关事件时间线