Я использую 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 в отслеживаемую папку, наблюдатель игнорирует этот файл. Несмотря на указание "*.tmp" в атрибуте ignore_function, он игнорировал файл " .temp". Как убедиться, что мой обработчик работает правильно?
Заранее спасибо.






Такое поведение связано с предоставленным вами аргументом шаблонов. Он будет игнорировать все, что не является *.csv, включая файлы .temp и .tmp. Если вы хотите вызвать события для файлов .temp, вам нужно будет указать это в аргументе шаблонов:
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».