#python #python-watchdog
#python #python-watchdog
Вопрос:
Я использую 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». Как убедиться, что мой обработчик работает должным образом?
Заранее спасибо.
Ответ №1:
Это поведение связано с предоставленным вами аргументом patterns. Он будет игнорировать все, что не является *.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»