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
有错误的地方请指出
国家一级拖延症患者