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()
标签:批量,zip,压缩,zipfile,filename,文件夹,file,path,os
From: https://www.cnblogs.com/AZ26/p/18207268