首页 > 解决方案 > os.rename PermissionError: [WinError 32]?

问题描述

我对 os.rename 了解不多,但实际上它适用于大部分 vedio,但是当它只剩下一个文件夹时它会发出错误,该文件夹的 vedios 只有少数可以重命名,而其他则不能. 我应该怎么办?

import os
import cv2
from moviepy.editor import VideoFileClip
import pandas as pd

class FileCheck():

    def get_file_times(self, filename): 
        clip = VideoFileClip(filename)
        file_time = self.timeConvert(clip.duration)
        return file_time

    
    def timeConvert(self, size):  
        M, H = 60, 60 ** 2
        if size < M:
            return str(size) + u's'
        if size < H:
            return u'%s min %s s ' % (int(size / M), int(size % M))
        else:
            hour = int(size / H)
            mine = int(size % H / M)
            second = int(size % H % M)
            tim_srt = u'%s h %s min %s s ' % (hour, mine, second)
            return tim_srt


def get_file_path(root_path, file_list, dir_list,deep):
    
    dir_or_files = os.listdir(root_path)
    for dir_file in dir_or_files:
        
        dir_file_path = os.path.join(root_path, dir_file)
        
        if os.path.isdir(dir_file_path):
          
            dir_list.append(dir_file_path)
            
            get_file_path(dir_file_path, file_list, dir_list,deep+1)
        else:
            if dir_file.find("py")!=-1 :
                continue
            file_list.append(dir_file_path)

if __name__ == '__main__':
    df = pd.DataFrame(columns=['id','time', 'shine'])

    fc = FileCheck()
    
    root_path = r"./"
   
    file_list = []
    
    dir_list = []
    get_file_path(root_path, file_list, dir_list,0)
    #print(file_list)
    s = "YJJ_"

    for i in range(len(file_list)):
        filename = file_list[i]
        print(filename)
        cap = cv2.VideoCapture(filename)  
        ftime = fc.get_file_times(filename)  
        df.loc[i] = [s+str(i), ftime, 0]
    print("complete")
    for i in range(len(file_list)):
        filename = file_list[i]
        ss = filename.split("D")[0]
        os.rename(filename, ss + s + str(i)+".mov")

    df.to_csv("result.csv",index=0)

我只想计算视频的时间。但我遇见

PermissionError: [WinError 32] The process cannot access the file because it is being used by another process: 'D45.mov' -> 'DJI_0001.mov'

标签: python

解决方案


该错误意味着您无法更改所选文件,因为另一个进程正在使用它,因此这样做可能会破坏/崩溃另一个进程。

确保该文件未打开,并且未被其他程序使用,然后重试。


推荐阅读