ファイルが更新されたタイミングや、ディレクトリにファイルが新規に保存されたタイミングで何かタスクを実行させたいときがあります。最近のOSではシステムレベルでのサポートもあります。
これらのインタフェースをラップするライブラリも多く公開されています。
パッケージ名からわかるようにLinux の inotify のインタフェースを利用しています。 Linux 以外のプラットフォームでは利用できないことに注意してください。
この資料を作成している時点で、pypi.org では次のパッケージが公開されています。
rs-pyinotify は、docstrings が変わっているだけで機能は pyinotify と同じものです。
import pyinotify
import asyncio
def handle_read_callback(notifier):
"""
Just stop receiving IO read events after the first
iteration (unrealistic example).
"""
print('handle_read callback')
notifier.loop.stop()
wm = pyinotify.WatchManager()
loop = asyncio.get_event_loop()
notifier = pyinotify.AsyncioNotifier(wm, loop,
callback=handle_read_callback)
wm.add_watch('/tmp', pyinotify.ALL_EVENTS)
loop.run_forever()
notifier.stop()