Инициировать переименование изображений в папке при обновлении Excel

#python #automation #python-watchdog

Вопрос:

Я создал приведенный ниже код, запускающий процесс переименования файла изображения, добавленного в каталог. Данные о переименовании обновляются на листе Excel за 20 секунд до загрузки файла изображения.

Код отлично работает в течение 1 итерации, а затем показывает код ошибки: Указано после кода.

Пожалуйста, дайте мне знать, где я ошибаюсь.

 import watchdog.events
import watchdog.observers
import time
 
import pandas as pd
import glob
import os
import os.path
import time
from watchdog.observers import Observer
from watchdog.events import FileSystemEventHandler

date = time.strftime("%Y%m%d")
print(date)

path = r"K:A100_COMMONA150_TRANSFER_AREA_1DAY_VALIDITYSuhas\"   date #   r'CAM1'

class OnMyWatch:
    # Set the directory on watch
    watchDirectory = path
  
    def __init__(self):
        self.observer = Observer()
  
    def run(self):
        event_handler = Handler()
        self.observer.schedule(event_handler, self.watchDirectory, recursive = True)
        self.observer.start()
        try:
            while True:
                time.sleep(5)
        except:
            self.observer.stop()
            print("Observer Stopped")
  
        self.observer.join()
  
  
class Handler(FileSystemEventHandler):
  
    @staticmethod
    def on_any_event(event):
        if event.is_directory:
            return None
  
        elif event.event_type == 'created':
            # Event is created, you can process it now 
            
            img_folder = os.listdir(path)
            print(path, img_folder)
            img_name = []
            for img in img_folder:
                name, ext = img.split(".")
                img_name.append(name)

            print(img_name)

            time_chunk=[]
            for x in img_name:
                y = x[:11]
                time_chunk.append(y)

            print(time_chunk)

            df = pd.read_excel(r"K:A100_COMMONA150_TRANSFER_AREA_1DAY_VALIDITYSuhasg-ng.xlsx")
            engine_no = df['engine_no'].iloc[-1]
            date_time = str(df['date_time'].iloc[-1])

            print(engine_no)
            print(date_time[:11])

            no = 0
            for i in time_chunk:

                old_path = path  "\"   img_name[no]   '.bmp'
                print(img_name[no])
                #old_folder.append(old_path)
                new_path = path   "\"   engine_no   '_'  str(no)   '.bmp'
                print(i)
                no  = 1
                if i == date_time[:11]:
                    rename = os.rename(old_path, new_path)
           
if __name__ == '__main__':
    watch = OnMyWatch()
    watch.run()
    
#Works Once
 

сообщение об ошибке:

Исключение в потоке Поток-6: Трассировка (последний последний вызов): Файл «C:Usersshreyas.bkAnaconda3libthreading.py», строка 932, в файле _bootstrap_inner self.run () «C:Usersshreyas.bkAnaconda3libsite-packageswatchdogobserversapi.py», строка 199, в файле run self.dispatch_events(self.event_queue, self.timeout) «C:Usersshreyas.bkAnaconda3libsite-packageswatchdogobserversapi.py», строка 372, в файле обработчика dispatch_events.отправка(событие) «C:Usersshreyas.bkAnaconda3libsite-packageswatchdogevents.py», строка 260, в диспетчерской «я».Файл on_any_event(событие)»», строка 86, в разрешении on_any_event Ошибка: [Ошибка 32] Процесс не может получить доступ к файлу, поскольку он используется другим процессом: ‘K:A100_COMMONA150_TRANSFER_AREA_1DAY_VALIDITYSuhas\20210907210426_141919_0000000004_CAM1_OK.bmp’ -> ‘K:A100_COMMONA150_TRANSFER_AREA_1DAY_VALIDITYSuhas\202109071GDA536685_3.bmp»