用python检测文件是否正在被修改
2013年11月17日 23:07
使用lsof filename 可以查询到文件正在被谁使用。下面是python实现的检测代码。
a.py检测代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | #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模拟正在修改文件
1 2 3 4 5 6 7 | #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模块