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