用python检测文件是否正在被修改
2013年11月17日 23:07
使用lsof filename 可以查询到文件正在被谁使用。下面是python实现的检测代码。
a.py检测代码
#encoding=utf-8 import os def isOpen(filename): # 执行lsof命令 p = os.popen("lsof %s" % filename) # lsof找到打开的文件时有输出 content = p.read() p.close() # 通过是否有输出,判断文件是否打开 return bool(len(content)) if __name__ == '__main__': print isOpen("a.log")
b.py模拟正在修改文件
#encoding=utf-8 import time if __name__ == '__main__': f = open("a.log", 'a') while True: time.sleep(5)
注意只能检测到文件被谁打开的情况。在python中就是open()了一个文件,并且还没有close()掉的情况。
以下情况是检测不到的:
vim xxx
python xxx
上面是比较简陋的一种方式,更强大的功能请见pyinotify模块