python-记录一个批量压缩文件夹的方法

import os
import zipfile
from tkinter import filedialog


class ZipDir:
    """
    ZipFile() 用于创建1个 zip 文件对象,示例中的三个参数分别表示:
    filename:压缩成的zip包的路径(含压缩包名称);例如:xxx.zip
    mode:可选 r,w,a ,代表不同的打开文件的方式;r只读;w重写;a添加
    compression:指出这个 zipfile 的压缩方法,默认是 ZIP_STORED ,另一种是 ZIP_DEFLATED
    ZipFile.write() 用于将指定文件添加到zip文档中,示例中的两个参数分别表示:
    filename:需要压缩的文件名
    arcname:添加到zip文档之后保存的名称
    https://cloud.tencent.com/developer/article/2131150
    """
    input_path = filedialog.askdirectory(title='批量压缩文件夹,请选择文件夹存放路径')

    @staticmethod
    def zip_file(dirpath, outFULLName):
        z = zipfile.ZipFile(outFULLName, 'a', zipfile.ZIP_DEFLATED)
        for path, dirnames, filenames in os.walk(dirpath):
            fpath = path.replace(dirpath, "")
            for filename in filenames:
                # 源文件 压缩后文件名(带\则可保存在压缩包路径) 原本在目录下第几层就压缩在第几层
                z.write(os.path.join(path, filename), os.path.join(fpath, filename), compress_type=zipfile.ZIP_DEFLATED)

    def excute(self):
        files = os.listdir(self.input_path)
        for file in files:
            file_path = os.path.join(self.input_path, file)
            out_path = os.path.join(self.input_path, f'{file}.zip')
            ZipDir.zip_file(file_path, out_path)


ZipDir().excute()
posted @ 2024-05-22 22:24  AZ26  阅读(50)  评论(0)    收藏  举报