Python實現文件的壓縮及解壓

ybw8 10年前發布 | 1K 次閱讀 Python

當我們遇到大量小文件的傳輸時,一般會涉及到文件的壓縮和解壓,下面對zip的壓縮解壓直接上代碼

壓縮:

    def zip_dir(dirname,zipfilename):
""" | ##@函數目的: 壓縮指定目錄為zip文件 | ##@參數說明:dirname為指定的目錄,zipfilename為壓縮后的zip文件路徑 | ##@返回值:無 | ##@函數邏輯: """
filelist = []
if os.path.isfile(dirname):
filelist.append(dirname)
else :
for root, dirs, files in os.walk(dirname):
for name in files:
filelist.append(os.path.join(root, name))

    zf = zipfile.ZipFile(zipfilename, "w", zipfile.zlib.DEFLATED)  
    for tar in filelist:  
        arcname = tar[len(dirname):]  
        #print arcname  
        zf.write(tar,arcname)  
    zf.close()  </pre> 解壓縮: 

    def unzip_file(zipfilename, unziptodir):
""" | ##@函數目的: 解壓zip文件到指定目錄 | ##@參數說明:zipfilename為zip文件路徑,unziptodir為解壓文件后的文件目錄 | ##@返回值:無 | ##@函數邏輯: """
if not os.path.exists(unziptodir):
os.mkdir(unziptodir, 0777)
zfobj = zipfile.ZipFile(zipfilename)
for name in zfobj.namelist():
name = name.replace('\','/')

        if name.endswith('/'):  
            p = os.path.join(unziptodir, name[:-1])  
            if os.path.exists(p):  
                # 如果文件夾存在,就刪除之:避免有新更新無法復制  
                shutil.rmtree(p)  
            os.mkdir(p)  
        else:  
            ext_filename = os.path.join(unziptodir, name)  
            ext_dir= os.path.dirname(ext_filename)  
            if not os.path.exists(ext_dir):  
                os.mkdir(ext_dir,0777)  
            outfile = open(ext_filename, 'wb')  
            outfile.write(zfobj.read(name))  
            outfile.close()  </pre> 



 本文由用戶 ybw8 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!