【问题标题】:Watchdog ignore pattern看门狗忽略模式
【发布时间】:2020-07-08 18:25:24
【问题描述】:

我尝试与这里的其他帖子一起工作,但无法让它发挥作用。我是 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()

非常感谢。

【问题讨论】:

    标签: python python-3.x watchdog python-watchdog


    【解决方案1】:

    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
    

    【讨论】:

    • 谢谢!它返回图像的完整路径:home/pi/Media/plant-classification/1200px-Sunflower_sky_backdrop.jpg 用.contains 代替,也许?
    • 得到了它与这个if "__" not in event.src_path:一起工作非常感谢你的所有帮助。我对 Python 和使用 Coral Accelerator 还是很陌生。仍在努力解决问题。
    • 没问题,对答案的赞成票将是晚餐:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-01-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-21
    • 2012-04-09
    • 2011-12-04
    相关资源
    最近更新 更多