ウォッチドッグで監視されているファイルの名前を変更すると、on_moved イベント トリガーが生成されます。私が抱えている問題は、ファイルが移動/名前変更されたものを知る方法がないことです(ファイルの名前が変更されたときに on_moved イベントトリガーも発生するため)。これをウォッチドッグに組み込む方法はありますか、または私が書いているプログラムで回避策を構築する必要がありますか?
ここにいくつかのサンプルコードがあります
#!/usr/bin/python
'''
Created on 2014-07-03
'''
import sys
import time
from watchdog.observers import Observer
from watchdog.events import FileSystemEventHandler
'''
Extend FileSystemEventHandler to be able to write custom on_any_event method
'''
class MyHandler(FileSystemEventHandler):
'''
Overwrite the methods for creation, deletion, modification, and moving
to get more information as to what is happening on output
'''
def on_created(self, event):
print("created: " + event.src_path)
def on_deleted(self, event):
print("deleted: " + event.src_path)
def on_modified(self, event):
print("modified: " + event.src_path)
def on_moved(self, event):
print("moved/renamed: " + event.src_path)
watch_directory = sys.argv[1] # Get watch_directory parameter
event_handler = MyHandler()
observer = Observer()
observer.schedule(event_handler, watch_directory, True)
observer.start()
'''
Keep the script running or else python closes without stopping the observer
thread and this causes an error.
'''
try:
while True:
time.sleep(1)
except KeyboardInterrupt:
observer.stop()
observer.join()
コードは、イベントが発生するたびに、発生したイベントの種類とファイル/フォルダーへのパスを出力します。監視するフォルダーへのパスである 1 つのパラメーターを取ります。