以下是从PyPI inotify页面上修剪过的示例的简化版本(
https://pypi.python.org/pypi/inotify),以帮助您入门:
import inotify.adapters
import os
notifier = inotify.adapters.Inotify()
notifier.add_watch('/home/student')
for event in notifier.event_gen():
if event is not None:
# print event # uncomment to see all events generated
if 'IN_CREATE' in event[1]:
print "file '{0}' created in '{1}'".format(event[3], event[2])
os.system("your_python_script_here.py")
它创建了一个Inotify对象,然后使用add_watch()方法添加要监视的目录。接下来,它使用event_gen()方法从Inotify对象创建一个事件生成器。最后,它遍历该生成器。
现在,对监视目录产生影响的文件操作将生成一个或多个事件。每个事件都采用四个值的元组形式:
- _INOTIFY_EVENT元组(为了清晰起见,在下面的输出中省略)
- 描述事件的字符串列表
- 受影响的目录名称
- 受影响的文件名称
取消注释上述示例中的第一个打印语句并在监视目录中创建文件'new',将得到以下输出:
( (...), ['IN_CREATE'], '/home/student', 'new')
在'/home/student'中创建了文件'new'
( (...), ['IN_ISDIR', 'IN_OPEN'], '/home/student', '')
( (...), ['IN_ISDIR', 'IN_CLOSE_NOWRITE'/home/student', '')
( (...), ['IN_OPEN'], '/home/student', 'new')
( (...), ['IN_ATTRIB'], '/home/student', 'new')
( (...), ['IN_CLOSE_WRITE'], '/home/student', 'new')
由于'IN_CREATE'事件发生在创建新文件时,这是您可以添加任何要运行的代码的地方。