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) #解压每个压缩包
知识兔View Code