0

我正在使用看门狗来监视我的机器正在生成 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”文件。如何确保我的处理程序正常工作?

提前致谢。

4

1 回答 1

0

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

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

ignore_patterns 参数 if 用于忽略某些符合模式标准的模式:

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

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

于 2019-08-19T12:05:51.053 回答