【背景】當一個文件夾里存好好多.zip文件需要解壓時,手動一個個解壓再給文件重命名是一件很麻煩的事情,基於此,今天介紹一種使用python實現批量解壓文件夾中的壓縮文件並給文件重命名的方法——
【代碼實現】
#!/usr/bin/env python #! -*- coding:utf-8 -*- import zipfile import os import shutil def un_zip(file_name): """解壓單個文件""" zip_file = zipfile.ZipFile(file_name) #讀取zip文件 if os.path.isdir(file_name[0:-20]): #判斷是否存在文件夾,file_name[0:20]是為了方便我去掉日期和.zip的后綴 pass else: os.mkdir(file_name[0:-20]) #創建文件夾 for names in zip_file.namelist(): #解壓 zip_file.extract(names,file_name[0:-20]) zip_file.close() Conf = os.path.join(file_name[0:-20], 'conf') # 刪除配置文件,如不需要,可刪除 shutil.rmtree(Conf) if os.path.exists(file_name): #刪除zip文件 os.remove(file_name) print file_name[0:-20],'解壓成功' def un_zip_Tree(path): # 解壓文件夾中的zip文件 if not os.path.exists(path): # 如果本地文件夾不存在,則創建它 os.makedirs(path) for file in os.listdir(path): #listdir()返回當前目錄下清單列表 Local = os.path.join(path, file) #os.path.join()用於拼接文件路徑 if os.path.isdir(file): # 判斷是否是文件 if not os.path.exists(Local): #對於文件夾:如果本地不存在,就創建該文件夾 os.makedirs(Local) un_zip_Tree(path) else: # 是文件 if os.path.splitext(Local)[1] == '.zip': #os.path.splitext(Remote)[1]獲取文件擴展名,判斷是否為.zip文件 un_zip(Local) #解壓文件
un_zip()函數,可實現對傳入的單個.zip文件進行解壓放到新文件夾,並將原來的.zip文件刪除
un_zip_Tree()函數,可實現對傳入的文件夾路徑進行處理:找到文件夾里面的.zip文件,交給un_zip()解壓
if __name__ == '__main__': local = raw_input("please input the local path(eg.D:\\V1.6):") un_zip_Tree(local)
主函數只需要傳入需要批量解壓的文件夾就可以啦~
