python3-zipfile模塊打包


zipfile模塊

ZIP 文件格式是一個常用的歸檔與壓縮標准。 這個模塊提供了創建、讀取、寫入、添加及列出 ZIP 文件的工具。
它可以處理使用 ZIP64 擴展(超過 4 GB 的 ZIP 文件)的 ZIP 文件。它支持解密 ZIP 歸檔中的加密文件,但是目前不能創建一個加密的文件。解密非常慢,因為它是使用原生 Python 而不是 C 實現的。

摘自:python官網

壓縮文件夾

import os, os.path
import zipfile

# now_path獲取當前工作目錄

now_path = os.getcwd()

# 定義zip_dir函數(dirname: 目錄, zipfilename:zip文件名)

def zip_dir(dirname, zipfilename):

    # filelist列表用來存放文件的絕對路徑
    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 full_name in filelist:
        # file_name 獲取文件名
        file_name = full_name[len(dirname):]
        # 添加full_name 文件到壓縮包
        zf.write(full_name)
    zf.close()
     # 調用了close方法才會保證完成壓縮

更新

2020/1/20:精簡代碼,以下代碼也能實現文件夾的打包功能

def make_zip(source_dir, output_file):
    zf = zipfile.ZipFile(output_file, "w", zipfile.zlib.DEFLATED)
    for file in os.listdir(source_dir):
        filepath = os.path.join(source_dir, file)
        zf.write(filepath, file)  # 避免出現多層級的文件
    zf.close()

OVER

有錯誤的地方請指出


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM