使用 Python 的文件监视器中的 ValueError("empty pattern")

问题描述

我使用 python 目录进行监控以在文件创建时收到警报。

有时在此文件夹中创建文件时会出现异常:

File .....watchdog\utils\patterns.py,line 30 in <genexpr>
   return (any(path(match(p) for p in include_patterns)
File"c:\python3\lib\pathlib.py",line 921,in match
raise ValueError("empty pattern")
ValueError: empty pattern

这是python中的代码

import time
from watchdog.observers import Observer
from watchdog.events import PatternMatchingEventHandler

def on_created(event):
    with open(event.src_path,'r') as f:
        data=f.read()
    print(data)
    print(f"hey,{event.src_path} has been created!")

def on_deleted(event):
    print(f"what the f**k! Someone deleted {event.src_path}!")

def on_modified(event):
    print(f"hey buddy,{event.src_path} has been modified")

def on_moved(event):
    print(f"ok ok ok,someone moved {event.src_path} to {event.dest_path}")
    
if __name__ == "__main__":
    patterns = "*.csv"
    ignore_patterns = ""
    ignore_directories = False
    case_sensitive = True
    my_event_handler = PatternMatchingEventHandler(patterns,ignore_patterns,ignore_directories,case_sensitive)

    my_event_handler.on_created = on_created
    my_event_handler.on_deleted = on_deleted
    my_event_handler.on_modified = on_modified
    my_event_handler.on_moved = on_moved
    path = "t/"
    go_recursively = True
    my_observer = Observer()
    my_observer.schedule(my_event_handler,path,recursive=go_recursively)
    my_observer.start()
    time.sleep(10)

如何修复异常?

解决方法

您需要传入模式列表,而不是单个字符串。和 None,不是空字符串。

my_event_handler = PatternMatchingEventHandler(
    patterns=["*"],ignore_patterns=None,# pass in `None` in case of no ignores
    ignore_directories=False,case_sensitive=True,)