Mac で Python のWatchdog ライブラリを使い始めたばかりで、期待どおりに動作することを確認するためにいくつかの基本的なテストを行っています。残念ながら、そうではありません。ファイル自体へのパスではなく、イベントが登録されたファイルを含むフォルダーへのパスしか取得できないようです。
以下は、イベントが登録されるたびにイベントの種類、パス、および時刻を出力する簡単なテスト プログラム (Watchdog によって提供された例からわずかに変更されたもの) です。
import time
from watchdog.observers import Observer
from watchdog.events import LoggingEventHandler
from watchdog.events import FileSystemEventHandler
class TestEventHandler(FileSystemEventHandler):
def on_any_event(self, event):
print("event noticed: " + event.event_type +
" on file " + event.src_path + " at " + time.asctime())
if __name__ == "__main__":
event_handler = TestEventHandler()
observer = Observer()
observer.schedule(event_handler, path='~/test', recursive=True)
observer.start()
try:
while True:
time.sleep(1)
except KeyboardInterrupt:
observer.stop()
observer.join()
src_path 変数には、イベントが発生したファイルのパスが含まれている必要があります。
ただし、私のテストでは、ファイルを変更すると、src_path はファイル自体へのパスではなく、ファイルを含むフォルダーへのパスのみを出力します。たとえばmoon.txt
、フォルダー内のファイルを変更するeuropa
と、プログラムは次の出力を出力します。
event noticed: modified on file ~/test/europa at Mon Jul 8 15:32:07 2013
変更されたファイルへのフル パスを取得するには、何を変更する必要がありますか?