
import zipfile import os class FileInfo(): #處理VOT2019數據集,將其中的壓縮包解壓到相應目錄 def __init__(self, file_dir): self.__file_dir = file_dir @property def file_dir(self): return self.__file_dir def un_zip(self, filepath): """ 將filepath解壓到指定路徑中 :param filepath: :return: """ zip_file = zipfile.ZipFile(filepath) index_num = filepath.rindex('/') path = filepath[0:index_num:1] print(path) try: zip_file.extractall(path) #解壓文件到路徑path except: print(filepath + '解壓失敗') pass print(filepath + '解壓完成') os.remove(filepath) #刪除解壓的源文件 zip_file.close() def get_all_filespath(self, dir): ''' 返回dir下多級目錄下文件的完整路徑 :param dir: :return: ''' filesname = [] #存放文件的完整路徑 list = os.listdir(dir) #獲取dir目錄下的所有目錄文件名 for i in range(0, len(list)): path = os.path.join(dir, list[i]) #連接路徑+目錄文件名 if os.path.isdir(path): #遞歸獲取文件完整的路徑 filesname.extend(self.get_all_filespath(path)) if os.path.isfile(path) and (path.find('.zip')>-1): #將.zip壓縮包的完整路徑保存在filesname中 filesname.append(path) return filesname file_dir = r'/home/jq/Desktop/VOT2019' file_info = FileInfo(file_dir) filesname = file_info.get_all_filespath(file_dir) #獲取壓縮包文件的絕對路徑 for filename in filesname: file_info.un_zip(filename) #解壓每個壓縮包