Python 的分包压缩zip或7z实现功能
Python是具备将文件夹及文件进行压缩的功能。
但是当上存附件服务器时候,有时候想压缩文件,但带宽不够,故实现了此功能。
- 运用Python 版本 3.7, 第三方库zipfile37
- 编译调试工具 VS Code
- 实现原理:
a) 读取源数据文件夹内每个文件的大小总大小,计算出需要分包数量n,利用locals()创建n个zipfile对象。
b)file_size_temp累加已读文件的大小,当超过分包目标的存储大小后->file_size_temp初始为0,且使用第n个zipfile对象进行压缩。
c)压缩完所有文件后就可以返回压缩文件绝对路径组成的list。
直接上代码,后续可能还优化:
import zipfile, os
import math
def zip_file(source_file, outputfile_path, block_size=100):
"""
@para:source_file:源压缩文件夹的绝对路径
@para:outputfile_path:压缩后的目录,
@para:block_size:单位为Mbits,默认100Mbits
@return:list,由压缩目录+f[i].zip组成的列表, i为分包数目
"""
# 判断outputfile_path是否存在,不存在,则创建:
if not os.path.exists(outputfile_path):
os.mkdir(outputfile_path)
size_Mbit=block_size*1024*1024
file_size_temp=0
count=1
for dir_path, dir_name, file_names in os.walk(source_file)