PatternMatchingEventHandler忽略我尚未设置为其属性的模式

时间:2019-04-02 07:03:37

标签: python python-watchdog

我正在使用看门狗监视我的计算机正在生成CSV文件的文件夹。但是在生成CSV文件之前,我的机器正在生成临时文件,然后将其转换为正确的CSV。因此,为了忽略放置在正在监视的文件夹中的临时文件,我使用了PatternMatchingEventHandler。

相同的代码在下面给出

class Watcher:
    def __init__(self, args):
        self.watch_dir = os.getcwd()
        print(args[0])
        self.directory_to_watch = os.path.join(self.watch_dir, args[1])
        self.observer = Observer()
        self.event_handler = Handler(patterns=["*.CSV"], ignore_patterns=["*.tmp"], ignore_directories=True)
        #self.event_handler = Handler()

    def run(self):
        self.observer.schedule(self.event_handler, self.directory_to_watch, recursive=False)
        self.observer.start()
        try:
            while True:
                time.sleep(1)
        except:
            self.observer.stop()
            print("Error")

        self.observer.join()

当我将扩展名为.temp的文件放入正在监视的文件夹中时,观察者将忽略该文件。尽管在ignore_function属性中提供了“ *。tmp” ,但它忽略了“ .temp” 文件。如何确保我的处理程序正常工作?

谢谢。

1 个答案:

答案 0 :(得分:0)

此行为归因于您提供的patterns参数。它将忽略不是* .csv的所有内容,其中包括.temp和.tmp文件。如果您想引发.temp文件的事件,则需要将其提供给patterns参数:

self.event_handler = Handler(patterns=["*.CSV","*.temp"], ignore_directories=True)

ignore_patterns参数,如果用于忽略某些符合模式中条件的模式:

self.event_handler = Handler(patterns=["*.CSV"], ignore_patterns=["temp"], ignore_directories=True)

这将允许所有CSV文件,但不允许使用“ temp.csv”