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

python watchdog observe certain files but all directories

我需要观察 .tsv 类型的文件,但还需要观察 directories.

上的所有事件

目前,对于 patterns 参数,这是忽略目录。

我想让它观察 directories 上的每个事件。

这是我的代码:

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()

如何做到?

是的。不要使用模式,只需配置目录,当事件被触发时,你要做的是检查 src_path 以查看它是否是 .tsv 文件,然后你可以在此时实现你需要的任何逻辑......