def on_moved(self, event): FileSystemEventHandler.on_moved(self, event) src_relpath = os.path.abspath(event.src_path) dst_relpath = os.path.abspath(event.dest_path) self._onchange(src_relpath, FsProvider.DELETE, self.sender.get_uid()) if os.path.isdir(event.dest_path): self._onchange(dst_relpath, FsProvider.DIRECTORY, self.sender.get_uid()) else: self._onchange(dst_relpath, FsProvider.FILE, self.sender.get_uid())
def main(): event_handler = FileSystemEventHandler() event_handler.on_created = on_change event_handler.on_moved = on_change event_handler.on_modified = on_change observer = Observer() observer.schedule(event_handler, str(src / Path("res")), recursive=True) observer.start() try: while True: time.sleep(1) except KeyboardInterrupt: observer.stop() observer.join()
if __name__ == "__main__": # указываем, какая область кода не будет выполняться, # если наш модуль импортирован в другой скрипт # patterns = "*" # ignore_patterns = "" # ignore_directories = False # case_sensitive = True # event_handler = PatternMatchingEventHandler event_handler = FileSystemEventHandler( ) #создаем обработчик, который реагирует на поступление определенного события # только он ничего не умеет, так что придется его научить теми процедурами, которые мы написали ранее: event_handler.on_created = on_created event_handler.on_deleted = on_deleted event_handler.on_modified = on_modified event_handler.on_moved = on_moved path = "dir_to_watch" go_recursively = True observer = Observer( ) # создаем наблюдатель, определяет зависимость "один-ко-многим" # между объектами так, что при изменении состояния одного объекта # все зависящие от него объекты уведомляются и обновляются автоматически observer.schedule(event_handler, path, recursive=go_recursively) # Observer является относительно далеким потомком threading.Thread, # соотвественно после вызова start() мы получаем фоновый поток, # следящий за изменениями. # Так что если скрипт сразу завершится, то ничего толкового мы не получим. observer.start() print(f"{datetime.datetime.now()}: started watching {path}") try:
def on_moved(self, event): FileSystemEventHandler.on_moved(self, event) self.process_event(event.dest_path) return True
def on_moved(self, event): ''' @summary: ファイル移動イベント ''' FileSystemEventHandler.on_moved(self, event)
pass def on_moved(self, event): # When files are moved pass if __name__ == "__main__": # Initialise file system event handler fs_event_handler = FileSystemEventHandler() # Calling funcs fs_event_handler.on_modified = Handler().on_modified fs_event_handler.on_created = Handler().on_created fs_event_handler.on_deleted = Handler().on_deleted fs_event_handler.on_moved = Handler().on_moved # Initialise Observer observer_fs = Observer() observer_fs.schedule(fs_event_handler, path, recursive=False) # Start the observer observer_fs observer_fs.start() try: print("") print("######## SMRT File Watcher: Active ########") print(f"Put your SMRT files here -> {path}...") while True: time.sleep(5) except KeyboardInterrupt: observer_fs.stop()