触发将文件夹中的图像重命名为Excel更新

2024-04-25 02:28:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我已经创建了下面的代码触发器重命名过程的图像文件添加到一个目录。在上载图像文件前20秒,在excel工作表中更新重命名数据

该代码在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_COMMON\A150_TRANSFER_AREA_1DAY_VALIDITY\Suhas\\" + 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_COMMON\A150_TRANSFER_AREA_1DAY_VALIDITY\Suhas\g-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:\Users\shryas.bk\Anaconda3\lib\threading.py”,第932行,在\u bootstrap\u inner中 self.run() 文件“C:\Users\shryas.bk\Anaconda3\lib\site packages\watchdog\obsers\api.py”,第199行,正在运行 self.dispatch\u事件(self.event\u队列、self.timeout) 文件“C:\Users\shryas.bk\Anaconda3\lib\site packages\watchdog\obsers\api.py”,第372行,在dispatch\u事件中 handler.dispatch(事件) 文件“C:\Users\shryas.bk\Anaconda3\lib\site packages\watchdog\events.py”,第260行,在dispatch中 任何事件(事件)上的self.on 文件“”,第86行,在任何事件中 PermissionError:[WinError 32]进程无法访问该文件,因为它正被另一个进程使用:“K:\A100\u COMMON\A150\u TRANSFER\u AREA\u 1DAY\u VALIDITY\Suhas\\20210907\210426\u 141919\u000000000 4\u CAM1\u OK.bmp'->;”K:\A100\u公共\A150\u传输\u区域\u 1DAY\u有效性\Suhas\\20210907\1GDA536685\u 3.bmp'