Python 解压压缩包

#!/usr/bin/env python
#_*_ coding:utf-8 _*_

'''
Created on 2017年8月22日

@author: ZHANGHENG266
'''

import os
import zipfile

#zip与tar类似,先读取多个文件名称,然后解压。
def un_zip(file_name):
    """unzip zip file"""
    zip_file = zipfile.ZipFile(file_name)
    if os.path.isdir(file_name + "_files"):
        pass
    else:
        os.mkdir(file_name + "_files")
    for names in zip_file.namelist():
        zip_file.extract(names,file_name + "_files/")
    zip_file.close()

#def eachfor(pathDir):

#遍历文件夹,并将文件解压到当前目录
def eachFile(filepath):
    pathDir = os.listdir(filepath)      #获取当前路径下的文件名,返回List
    print pathDir     
    for s in pathDir:
        newDir=os.path.join(filepath,s)     #将文件命加入到当前文件路径后面
        if os.path.isfile(newDir):         #如果是文件
            if ".zip" in s :
                un_zip(newDir)
                pathDir1 = os.listdir(filepath)
                c= set(pathDir1) - set(pathDir)
                for i in c:
                    eachFile(os.path.join(filepath,i))    
            else:
                break
        else:
            eachFile(newDir)                #如果不是文件,递归这个文件夹的路径   

if __name__ == '__main__':
    eachFile("D:\Test")
    pass


#    g = os.walk("D:\Test")
#    for path,d,filelist in g:  
#        print d
#        print "lalala"  
#        for filename in filelist:  
#            print os.path.join(path, filename) 

#遍历文件夹,并将文件解压到当前目录
#def eachFile(filepath):
#    pathDir = os.listdir(filepath)      #获取当前路径下的文件名,返回List 
#    while True:    
#        for s in pathDir:
#            newDir=os.path.join(filepath,s)
#            print pathDir
#            if os.path.isfile(newDir) and ".zip" not in s:
#                break
#        else:  
#            for s in pathDir:
#                newDir=os.path.join(filepath,s)     #将文件命加入到当前文件路径后面
#                if os.path.isfile(newDir):         #如果是文件
#                    if ".zip" in s :
#                        un_zip(newDir)
#                        pathDir = os.listdir(filepath)
#                        print pathDir
#                    else:
#                        break
#                else:
#                    eachFile(newDir)                #如果不是文件,递归这个文件夹的路径
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值