watchdog 库支持多平台,受到越来越多的关注。顾名思义,watchdog库就是对文件或者目录(event)来监控以及作出反应。我们对文件作出删除,生成,修改和移动时,event就代表你所做的行为传入到FileSystemEvent类进行处理,然后通过FileSystemEventHandler来作出反应。
FileSystemEvent(event)—>FileSystemEventHandler(event)
即:
- watchdog.event.Dir/FileDeletedEvent(event)**—>**self.on_deleted(event)
- watchdog.event.Dir/FileCreatedEvent(event)**—>**self.on_created(event)
- watchdog.event.Dir/FileModifiedEvent(event)**—>**self.on_modified(event)
- watchdog.event.Dir/FileMovedEvent(event)**—>**self.on_moved(event)
以上这些监控和改变均是通过watchdog.observers.Observer()来实现的。
以下为官方实例:
import sys
import time
import logging
from watchdog.observers import Observer
from watchdog.events import LoggingEventHandler
if __name__ == "__main__":
logging.basicConfig(level=logging.INFO,
format='%(asctime)s - %(message)s',
datefmt='%Y-%m-%d %H:%M:%S')
path = sys.argv[1] if len(sys.argv) > 1 else '.'
event_handler = LoggingEventHandler()
observer = Observer()
observer.schedule(event_handler, path, recursive=True)
observer.start()
try:
while True:
time.sleep(1)
except KeyboardInterrupt:
observer.stop()
observer.join()