Python中用MacFSEvents模块监视MacOS文件系统改变一例
最近一个项目中用gulp-watch不能满足需求,于是想到了用Python来解决问题。在安装了MacFSEvents模块后,写了下面一个小程序。
#!/usr/bin/env python2
#-*- coding: utf-8 -*- import os,sys,signal
from fsevents import Observer
from fsevents import Stream def callback(FileEvent):
# attributes of FileEvent:mask, cookie and name.
# mask: 512-delete;256-create;2-changed
if FileEvent.name.endswith("index.html") and FileEvent.mask == 256:
print "site rebuild. redeploy extra assets"
os.system("gulp")
elif FileEvent.name.endswith(".scss") and FileEvent.mask == 2:
print "scss changed! compile and redeploy extra assets"
os.system("gulp sass") if __name__ == '__main__':
observer = Observer()
stream = Stream(callback, ".", file_events=True)
observer.schedule(stream)
observer.start()
#按Control+\强制结束
但是运行时发现只能用Control+\强杀进程,而不能用Control+C结束。
经google搜索及自行研究结果,得到下面这段程序。用fork子进程的方法,使得进程响应Control+C 退出。
#!/usr/bin/env python2
#-*- coding: utf-8 -*- import os,sys,signal
from fsevents import Observer
from fsevents import Stream def callback(FileEvent):
# attributes of FileEvent:mask, cookie and name.
# mask: 512-delete;256-create;2-changed;...
if FileEvent.name.endswith("index.html") and FileEvent.mask == 256:
print "site rebuild. redeploy extra assets"
os.system("gulp")
elif FileEvent.name.endswith(".scss") and FileEvent.mask == 2:
print "scss changed! compile and redeploy extra assets"
os.system("gulp sass") def child():
observer = Observer()
stream = Stream(callback, ".", file_events=True)
observer.schedule(stream)
observer.start() class Watcher:
"""
创建一个做苦工的子进程。然后父进程等待KeyboardInterrupt并杀掉子进程。
27
""" def __init__(self):
self.child = os.fork()
if self.child == 0:
child()
else:
self.watch() def watch(self):
try:
os.wait()
except KeyboardInterrupt:
#捕获 Control+C,杀掉子进程
print 'KEYBOARDINTERRUPT\n'
self.kill()
sys.exit() def kill(self):
try:
os.kill(self.child, signal.SIGKILL)
except OSError: pass if __name__ == '__main__':
Watcher()
Python中用MacFSEvents模块监视MacOS文件系统改变一例的更多相关文章
- python中用psutil模块,yagmail模块监控CPU、硬盘、内存使用,阈值后发送邮件
import yagmailimport psutildef sendmail(subject,contents): #连接邮箱服务器 yag = yagmail.SMTP(user='邮箱名称@16 ...
- python的pymysql模块简介
一.介绍 在python中用pymysql模块来对mysql进行操作,该模块本质就是一个套接字客户端软件,使用前需要事先安装 pip3 install pymysql 二.操作简介 import py ...
- 【转】Python 3的pathlib模块:驯服文件系统
[转]Python 3的pathlib模块:驯服文件系统 https://python.freelycode.com/contribution/detail/1248 Python部落(python. ...
- python中os模块中文帮助
python中os模块中文帮助 python中os模块中文帮助文档文章分类:Python编程 python中os模块中文帮助文档 翻译者:butalnd 翻译于2010.1.7——2010.1.8 ...
- python的库有多少个?python有多少个模块?
这里列举了大概500个左右的库: ! Chardet字符编码探测器,可以自动检测文本.网页.xml的编码. colorama主要用来给文本添加各种颜色,并且非常简单易用. Prettytable主 ...
- Python中的模块介绍和使用
在Python中有一个概念叫做模块(module),这个和C语言中的头文件以及Java中的包很类似,比如在Python中要调用sqrt函数,必须用import关键字引入math这个模块,下面就来了解一 ...
- 周末班:Python基础之模块
什么是模块 什么是模块? 常见的场景:一个模块就是一个包含了python定义和声明的文件,文件名就是模块名字加上.py的后缀. 但其实import加载的模块分为四个通用类别: 1 使用python编写 ...
- 第四章:4.0 python常用的模块
1.模块.包和相关语法 使用模块好处: 最大的好处是大大提高了代码的可维护性.其次,编写代码不必从零开始.当一个模块编写完毕,就可以被其他地方引用.我们在编写程序的时候,也经常引用其他模块,包括Pyt ...
- python中confIgparser模块学习
python中configparser模块学习 ConfigParser模块在python中用来读取配置文件,配置文件的格式跟windows下的ini配置文件相似,可以包含一个或多个节(section ...
随机推荐
- [转载]C++多态技术
摘自: http://www.royaloo.com/articles/articles_2003/PolymorphismInCpp.htm http://blog.sciencenet.cn/bl ...
- maven将jar包打如本地仓库命令
mvn install:install-file -DgroupId=org.apache.maven.plugins -DartifactId=maven-javadoc-plugin -Dvers ...
- 部署weblogic 12c的几点收获
最近刚编写完weblogic12c的部署脚本,这里将过程中的几点收获进行记录: 1.windows下编写的脚本在linux环境下运行需要dos2unix进行格式转换 2.weblogic安装环境检测需 ...
- python继承问题
python构造函数:__init__(): 如果子类定义了自己的__init__构造方法函数,当子类的实例对象被创建时,子类只会执行自己的__init__方法函数,如果子类未定义自己的构造方法函数, ...
- apache 软件历史版本查询
http://archive.apache.org/dist/ http://archive.apache.org/dist/struts/binaries/
- sad 关于一些html5新属性还需要用https才能支持
像我昨天在搞一个录音的小东西 在本地正常录音正常播放 但是放到线上环境http环境上就出现了如上的错误 功能都不能正常使用 然后就改成https线上环境 然后就正常了 如上 大家有什么赐教的欢迎留言 ...
- beego学习笔记(4):开发文档阅读(5)
controller的逻辑: 我们看下面的代码,就知道怎么传值的: import ( "github.com/astaxie/beego" ) type MainControlle ...
- Django的自带认证系统——auth模块
Django自带的用户认证 auth模块 from django.contrib import auth 备注:使用auth模块时,我们默认使用Django提供的auth_user表,创建数据时,可以 ...
- 深度学习方法(九):自然语言处理中的Attention Model注意力模型
欢迎转载,转载请注明:本文出自Bin的专栏blog.csdn.NET/xbinworld. 技术交流QQ群:433250724,欢迎对算法.技术感兴趣的同学加入. 上一篇博文深度学习方法(八):Enc ...
- 三十分钟理解博弈论“纳什均衡” -- Nash Equilibrium
欢迎转载,转载请注明:本文出自Bin的专栏blog.csdn.net/xbinworld. 技术交流QQ群:433250724,欢迎对算法.技术感兴趣的同学加入. 纳什均衡(或者纳什平衡),Nash ...