zip文件格式是通用的文档压缩标准,在ziplib模块中,使用ZipFile类来操作zip文件,下面具体介绍一下:
class zipfile.ZipFile(file[, mode[, compression[, allowZip64]]]) #表示一个zip文件
参数file: 表示文件的路径或类文件对象(file-like object);
参数mode:指示打开zip文件的模式,默认值为'r',表示读已经存在的zip文件,也可以为'w'或'a','w'表示新建一个zip文档或覆盖一个已经存在的zip文档,'a'表示将数据附加到一个现存的zip文档中。
参数compression:表示在写zip文档时使用的压缩方法,它的值可以是zipfile. ZIP_STORED 或zipfile. ZIP_DEFLATED。ZIP_STORE是默认的,表示不压缩;ZIP_DEFLATED表示压缩
参数allowZip64如果要操作的zip文件大小超过2G,应该将allowZip64设置为True。
ZipFile.getinfo(name)::获取zip文档内指定文件的信息。返回一个zipfile.ZipInfo对象,它包括文件的详细信息。
ZipFile.infolist():获取zip文档内所有文件的信息,返回一个zipfile.ZipInfo的列表。
ZipFile.namelist():获取zip文档内所有文件的名称列表。
ZipFile.extract(member[, path[, pwd]]):将zip文档内的指定文件解压到当前目录。
参数member:指定要解压的文件名称或对应的ZipInfo对象;(需要解压缩的文件名儿列表)
参数path指定了解析文件保存的文件夹;
参数pwd为解压密码。
ZipFile.printdir():将zip文档内的信息打印到控制台上。
ZipFile.setpassword(pwd):设置zip文档的密码。
ZipFile.read(name[, pwd]):获取zip文档内指定文件的二进制数据。
zipfile.write(filename[, arcname[, compress_type]]):将文件写到压缩包中
filename为文件路径,
arcname为添加到zip文档之后保存的名称;未指定将按 filename进行压缩;
参数compress_type表示压缩方法,它的值可以是zipfile. ZIP_STORED 或zipfile. ZIP_DEFLATED
ZipFile.getinfo(name) 方法返回的是一个ZipInfo对象,表示zip文档中相应文件的信息。它支持如下属性:
文档夹压缩
f = zipfile.ZipFile('sss_db.zip', 'w', zipfile.ZIP_DEFLATED)
for dirpath, dirnames, filenames in os.walk(file):
save_path = os.path.relpath(dirpath, file) #获取以压缩文件夹开始的相对路径
for filename in filenames:
f.write(os.path.join(dirpath, filename), os.path.join(save_path, filename)) f.close()
文档解压
#解压zip格式文件
file = 'sss_db.zip'
zip_file = zipfile.ZipFile(os.path.join(path, file))
for names in zip_file.namelist():
zip_file.extract(names, path)
zip_file.close()