我需要的功能是: 检测指定文件夹, 有变化则重新编译整个项目 该脚本的功能是: 实时检测整个文件夹的变化, 并打印 由于当我们修改一个文件时, 会出现读写打开关闭等多个事件发生
- 我需要的功能是: 检测指定文件夹, 有变化则重新编译整个项目
- 该脚本的功能是: 实时检测整个文件夹的变化, 并打印
- 由于当我们修改一个文件时, 会出现读写打开关闭等多个事件发生,造成动一个文件就会重新编译多次项目, 为了解决这个问题, 增加了时间戳功能, 判断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()