如何解决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()
解决方法
您是否尝试将其他 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 上使用看门狗,这些似乎有效。你的操作系统是什么?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。