【问题标题】:Watchdog - monitor directory for a creation of new files but ignore if file with a same filename already existed看门狗 - 监视目录以创建新文件,但如果已存在具有相同文件名的文件则忽略
【发布时间】:2021-06-30 13:07:05
【问题描述】:

我正在尝试为文件夹中的每个新文件运行我的程序。尝试使用 Watchdog 实现监控时,我偶然发现了以下问题。
我的程序对文件夹中的每个新文件做了什么? 它更改它(其中的一些参数)意味着它创建了一个具有相同文件名的新文件。我想要一个看门狗来检测我何时在目录中有一个新文件,然后运行我的程序,创建一个具有相同文件名的新文件(这就是我的程序所做的),但最重要的是,我不希望它在同一个文件上再次运行我的程序。 有可能吗?

这是我已经尝试过的 MWE。

from watchdog.observers import Observer
from watchdog.events import FileSystemEventHandler
from watchdog.events import FileCreatedEvent
from watchdog.events import PatternMatchingEventHandler  

class MyMonitorFolder(PatternMatchingEventHandler):
    patterns = ["*.fits"]
    
    def process(self, event):
        src_path = "A/B/"
        myProgram(src_path)
        
    def on_created(self, event):
        print (str(datetime.now()) + " " + str(event))
        self.process(event)
   
if __name__ == "__main__":
    event_handler = MyMonitorFolder()
    observer = Observer()
    observer.schedule(event_handler, path=src_path, recursive=False)
    print("Monitoring started")
    observer.start()
    
    try:
        while True:
            time.sleep(1)
    except KeyboardInterrupt:
        observer.stop()
    observer.join()

【问题讨论】:

    标签: python watchdog python-watchdog


    【解决方案1】:

    您是否尝试将其他 on_x 方法添加到您的 MyMonitorFolder 类?

    class MyMonitorFolder(PatternMatchingEventHandler):
        patterns = ["*.fits"]
        
        def process(self, event):
            src_path = "A/B/"
            myProgram(src_path)
            
        def on_created(self, event):
            print (str(datetime.now()) + " " + str(event))
            self.process(event)
    
        def on_modified(self, event):
            pass
    
        def on_moved(self, event):
            pass
    
        def on_deleted(self, event):
            pass
    
    

    我在 Windows 上使用看门狗,这些似乎工作正常。你的操作系统是什么?

    【讨论】:

    • 感谢您的建议。我刚刚做了,但它仍然做同样的事情,可能是因为我的程序仍然生成具有相同文件名的新文件,并且看门狗将其检测为新文件。我在 linux 上运行它。
    猜你喜欢
    • 1970-01-01
    • 2015-04-04
    • 2013-09-07
    • 1970-01-01
    • 2012-08-24
    • 2012-08-06
    • 1970-01-01
    • 2016-01-05
    • 2018-08-31
    相关资源
    最近更新 更多