python的zipfile实现文件目录解压缩,,主要是 解决了压缩目


主要是 解决了压缩目录下 空文件夹 的压缩 和 解压缩问题

压缩文件夹的函数:

 1 # coding:utf-8 2 import os 3 import zipfile 4  5 def zipdir(dirToZip,savePath): 6     if not os.path.isdir(dirToZip): 7         raise Exception,u"zipDir Error,not a dir‘%‘".format(dirToZip) 8  9     (saveDir,_)=os.path.split(savePath)10     if not os.path.isdir(saveDir):11         os.makedirs(saveDir)12 13     zipList = []14 15     for root,dirs,files in os.walk(dirToZip):16         for fileItem in files:17             zipList.append(os.path.join(root,fileItem))18         for dirItem in dirs:19             zipList.append(os.path.join(root,dirItem))20 21     zf = zipfile.ZipFile(savePath,‘w‘,zipfile.ZIP_DEFLATED)22 23     for tar in zipList:24         if tar != dirToZip:25             zf.write(tar,tar.replace(dirToZip,‘‘))26         else:27             zf.write(tar)28 29     zf.close()

解压的函数:

 1 def unZipFile(unZipSrc,targeDir): 2     if not os.path.isfile(unZipSrc): 3         raise Exception,u‘unZipSrc not exists:{0}‘.format(unZipSrc) 4  5     if not os.path.isdir(targeDir): 6         os.makedirs(targeDir) 7  8     print(u‘开始解压缩文件:{0}‘.format(unZipSrc)) 9 10     unZf = zipfile.ZipFile(unZipSrc,‘r‘)11 12     for name in unZf.namelist() :13         unZfTarge = os.path.join(targeDir,name)14 15         if unZfTarge.endswith("/"):16             #empty dir17             splitDir = unZfTarge[:-1]18             if not os.path.exists(splitDir):19                 os.makedirs(splitDir)20         else:21             splitDir,_ = os.path.split(targeDir)22 23             if not os.path.exists(splitDir):24                 os.makedirs(splitDir)25 26             hFile = open(unZfTarge,‘wb‘)27             hFile.write(unZf.read(name))28             hFile.close()29 30     print(u‘解压缩完毕,目标文件目录:{0}‘.format(targeDir))31 32     unZf.close()

调用:

if __name__ == ‘__main__‘:    dirpath = os.path.abspath(u‘.\\new‘)    savepath = os.path.abspath(u‘.\\new.zip‘)#    zipdir(dirpath,savepath)    unZipFile(savepath,dirpath)

python的zipfile实现文件目录解压缩

相关内容

    暂无相关文章

评论关闭