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 文件,然后你可以在此时实现你需要的任何逻辑......
我需要观察 .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 文件,然后你可以在此时实现你需要的任何逻辑......