解压文件下下的子目录里的压缩文件(运行时只需要输入待解压文件夹的路径)

#!/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[:-4]):             #判断是否存在文件夹,file_name[0:20]是为了方便我去掉日期和.zip的后缀
        pass
    else:
        os.mkdir(file_name[:-4])                 #创建文件夹

    for names in zip_file.namelist():             #解压
        zip_file.extract(names,file_name[:-4])
    zip_file.close()
    #Conf = os.path.join(file_name[:-4], 'conf')  # 删除配置文件,如不需要,可删除
    #shutil.rmtree(Conf)
    if os.path.exists(file_name):                 #删除zip文件
        os.remove(file_name)
    print(file_name[:-4],'解压成功')


def un_zip_Tree(path):                        # 解压文件夹中的zip文件
    if not os.path.exists(path):               # 如果本地文件夹不存在,则创建它
        os.makedirs(path)
    for file in os.listdir(path):  #listdir()返回当前目录下清单列表
        #print("ww",file)
        file = os.path.join(path, file)
        #print("rr",file)
        for sub_file in os.listdir(file):
            Local = os.path.join(file, sub_file)        #os.path.join()用于拼接文件路径
            print("Local",Local)
            if os.path.isdir(sub_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)       #解压文件


if __name__ == '__main__':
    local = input("please input the local path(eg.D:\\V1.6):")
    un_zip_Tree(local)


你可能感兴趣的:(code)