本文實(shí)例講述了Python實(shí)現(xiàn)多級(jí)目錄壓縮與解壓文件的方法。分享給大家供大家參考,具體如下:
創(chuàng)新互聯(lián)云計(jì)算的互聯(lián)網(wǎng)服務(wù)提供商,擁有超過13年的服務(wù)器租用、南充服務(wù)器托管、云服務(wù)器、虛擬主機(jī)、網(wǎng)站系統(tǒng)開發(fā)經(jīng)驗(yàn),已先后獲得國(guó)家工業(yè)和信息化部頒發(fā)的互聯(lián)網(wǎng)數(shù)據(jù)中心業(yè)務(wù)許可證。專業(yè)提供云主機(jī)、虛擬主機(jī)、空間域名、VPS主機(jī)、云服務(wù)器、香港云服務(wù)器、免備案服務(wù)器等。咱向來就是拿來主意,也發(fā)個(gè)東西供同行“拿來”使用吧
咱信奉的就是少量的代碼完成大量的工作,雖然代碼不多,但還是要用大腦的。發(fā)出來供大家參考
功能:
還是看代碼吧
#coding:utf-8 #壓縮解壓文件模塊 #支持中文路徑,支持多級(jí)目錄 #支持跨平臺(tái),在linux和window下都可直接使用 #python 2.7.2 #author:xieShuxu #QQ:258356793 #Email:sondx@qq.com import zipfile,os class ZipException(Exception): pass def unZipFile(zipPath,unZipPath=''): '''解壓文件 zipPath 要解壓的文件路徑 unZipPath 解壓目標(biāo)路徑 默認(rèn)解壓到zipPath所在目錄 ''' try: filePath=filePath.decode('utf-8'); zipFilePath=zipFilePath.decode('utf-8'); except: print '================' if not os.path.exists(zipPath): raise ZipException,'function unZipFile:not exists file or dir(%s)' %zipPath; if unZipPath=='': unZipPath=os.path.splitext(zipPath)[0]; if not unZipPath.endswith(os.sep): unZipPath+=os.sep; z = zipfile.ZipFile(zipPath, 'r') #zipInfolist=z.namelist(); for k in z.infolist(): savePath=unZipPath+k.filename; saveDir=os.path.dirname(savePath); if not os.path.exists(saveDir): os.makedirs(saveDir); f=open(savePath,'wb'); f.write(z.read(k)); f.close(); z.close(); #print unZipPath global _iterateExeZipFile; def exeZipFile(filePath,zipFilePath=''): '''壓縮文件 filePath 要解壓的文件路徑 可以是文件或者目錄 os.sep結(jié)尾表示壓縮該目錄下的子文件和文件夾 不包含該文件夾,否則包含該文件夾壓縮 ZipFilePath 壓縮包文件路徑 也可只傳文件名 默認(rèn)壓縮到filePath的父級(jí)目錄下 ''' filePath=filePath.decode('utf-8'); zipFilePath=zipFilePath.decode('utf-8'); #壓縮文件不存在直接返回 if not os.path.exists(filePath): raise ZipException,'function exeZipFile:not exists file or dir(%s)' %filePath; # 是否包含父級(jí)目錄壓縮 hasPDir=not filePath.endswith(os.sep); if not hasPDir: filePath=os.path.dirname(filePath); print filePath #校驗(yàn)備份文件路徑 if zipFilePath=='': zipFilePath=os.path.splitext(filePath)[0]+'.zip'; elif zipFilePath.find(os.sep)==-1:#只傳文件名的處理 zipFilePath=os.path.dirname(filePath)+os.sep+zipFilePath; #校驗(yàn)創(chuàng)建備份路徑目錄 if not os.path.exists(os.path.dirname(zipFilePath)): os.makedirs(os.path.dirname(zipFilePath)); #初始化壓縮包中的根目錄 zipRoot=''; if hasPDir: zipRoot=os.path.split(filePath)[1]; #開始?jí)嚎s z = zipfile.ZipFile(zipFilePath, 'w') if os.path.isfile(filePath): z.write(filePath,os.path.split(filePath)[1]); else: _iterateExeZipFile(filePath,zipRoot,z); z.close(); def _iterateExeZipFile(dirPath,zipRoot,z):