PatternMatchingEventHandler Игнорирование шаблона, который я не установил в его атрибут

Я использую 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". Как убедиться, что мой обработчик работает правильно?

Заранее спасибо.

Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
0
994
1

Ответы 1

Такое поведение связано с предоставленным вами аргументом шаблонов. Он будет игнорировать все, что не является *.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».

Другие вопросы по теме