欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Python 解压压缩包

程序员文章站 2022-06-04 08:06:29
...
#!/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)                #如果不是文件,递归这个文件夹的路径