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

有错误的地方请指出

posted @ 2020-01-10 17:00  贱贱的酸奶  阅读(1000)  评论(0编辑  收藏  举报