Windows の特定のディレクトリに追加された .jpg 写真のファイルを監視するために、修正したウォッチドッグの例を作成しました。
import time
from watchdog.observers import Observer
from watchdog.events import FileSystemEventHandler
paths = []
xp_mode = 'off'
class FileHandler(FileSystemEventHandler):
def on_created(self, event):
if xp_mode == 'on':
if not event.is_directory and not 'thumbnail' in event.src_path:
print "Created: " + event.src_path
paths.append(event.src_path)
def on_modified(self, event):
if not event.is_directory and not 'thumbnail' in event.src_path:
print "Modified: " + event.src_path
paths.append(event.src_path)
if __name__ == "__main__":
path = 'C:\\'
event_handler = FileHandler()
observer = Observer()
observer.schedule(event_handler, path, recursive=True)
observer.start()
try:
while True:
time.sleep(1)
except KeyboardInterrupt:
observe r.stop()
observer.join()
ファイルが追加されると、on_created と on_modified の両方が呼び出されることに気付きました。この問題に対処するために、on_modified メソッドのみを使用することにしました。ただし、これにより複数のコールバックが発生することに気付き始めていますが、今回は on_modified メソッドに対してです!
Modified: C:\images\C121211-0008.jpg
Modified: C:\images\C121211-0009.jpg
Modified: C:\images\C121211-0009.jpg <--- What?
Modified: C:\images\C121211-0010.jpg
Modified: C:\images\C121211-0011.jpg
Modified: C:\images\C121211-0012.jpg
Modified: C:\images\C121211-0013.jpg
なぜこれが起こっているのか、一生理解できません!それも一貫していないようです。誰かがこの問題に光を当てることができれば、それは大歓迎です。
同様の投稿がありましたが、Linux 向けでした: python watchdog modified and created duplicate events