简体   繁体   English

python watchdog观察某些文件但所有目录

[英]python watchdog observe certain files but all directories

I need to observe files of type, say .tsv but also need to observe all events on directories . 我需要观察类型为.tsv文件,还需要观察directories上的所有事件。

Currently, with the patterns argument, this is ignoring directories. 当前,使用patterns参数,这将忽略目录。

I want it to observe every event on directories . 我希望它能够观察directories每个事件。

Here's my code: 这是我的代码:

import time, sys
from watchdog.observers import Observer  
from watchdog.events import PatternMatchingEventHandler
from datetime import datetime
import os
class MyHandler(PatternMatchingEventHandler):
    patterns = ["*.tsv"]
    ignore_patterns = []
    ignore_directories = False
    case_sensitive = True

def process(self, event):
    log_file = open('log.txt', 'a')
    path = os.path.join(event.src_path)
    line = path + "\t" + event.event_type + "\t" + str(datetime.now()) + "\n"
    log_file.write(line)
    log_file.close()

def on_created(self, event):
    self.process(event)

if __name__ == '__main__':
    args = sys.argv[1:]
    observer = Observer()
    observer.schedule(MyHandler(), path=args[0] if args else '.', recursive=True)
    observer.start()

try:
    while True:
        time.sleep(1)
except KeyboardInterrupt:
    observer.stop()

observer.join()

How can it be done? 如何做呢?

Yes. 是。 Instead of using the pattern just configure the directory and when the event is triggered what you do is check the src_path to see if it is a .tsv file then you can implement whatever logic you need at this point... 除了使用模式之外,还不需要配置目录,而是在触发事件时检查src_path以查看它是否是.tsv文件,然后可以实现此时所需的任何逻辑...

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM