Шаблон игнорирования Watchdog - PullRequest
0 голосов
/ 08 июля 2020

Я пробовал работать с другими сообщениями об этом, но не смог заставить это работать. Я новичок ie с Python.

Мне нужна помощь с ignore_pattern.

Я загружаю изображения в папку, и временно изображения добавляются с __, поэтому фактическое изображение, добавленное во время загрузки файла, будет __image-name.jpg. После завершения загрузки он снова добавляется как image-name.jpg (и удаляет __image-name.jpg.

Я хочу игнорировать все файлы __image-name.jpg с помощью сторожевого таймера.

Вот мой код:

class Watcher:
    DIRECTORY_TO_WATCH = "director/where/images/are/uploaded"

    def __init__(self):
        self.observer = Observer()

    def run(self):
        event_handler = Handler()
        self.observer.schedule(event_handler, self.DIRECTORY_TO_WATCH, recursive=True)
        self.observer.start()
        try:
            while True:
                time.sleep(5)
        except:
            self.observer.stop()
            print("Error")

        self.observer.join()


class Handler(FileSystemEventHandler):

    @staticmethod
    def on_any_event(event):
        if event.is_directory:
            return None

        elif event.event_type == 'created':
            # Take any action here when a file is first created.
            print(event.src_path)
            img = Image.open(event.src_path)
            for result in engine.classify_with_image(img, top_k=3):
              print('---------------------------')
              print(labels[result[0]])
              print('Score : ', result[1])

        # elif event.event_type == 'modified':
            # Taken any action here when a file is modified.
            # print("Received modified event - %s." % event.src_path)

        elif event.event_type == 'deleted':
            # Taken any action here when a file is deleted.
            print("Received deleted event - %s." % event.src_path)

if __name__ == '__main__':
    w = Watcher()
    w.run()

Большое спасибо.

1 Ответ

1 голос
/ 08 июля 2020

Возвращает ли event.src_path строку? В таком случае вы можете использовать метод startswith строкового класса, чтобы пропускать ненужные изображения. Например:

elif event.event_type == 'created':
            # Take any action here when a file is first created.
            print(event.src_path)
            
            # Check if this filename starts with "__" and execute the next block
            if not event.src_path.startswith('__'):
              img = Image.open(event.src_path)
              for result in engine.classify_with_image(img, top_k=3):
                print('---------------------------')
                print(labels[result[0]])
                print('Score : ', result[1])
            # else do nothing
...