【背景】当一个文件夹里存好好多.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)
主函数只需要传入需要批量解压的文件夹就可以啦~