python_压缩与解压zip

1.zip
(1)压缩
import os
import zipfile
import sys
import time

#class zipfile.ZipFile(file[, mode[, compression[, allowZip64]]])
#创建一个ZipFile对象,表示一个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文件大小超过2G,应该将allowZip64设置为True。
try:
    import zlib
    compression = zipfile.ZIP_DEFLATED
except:
    compression = zipfile.ZIP_STORED
path = 'files/'  #要进行压缩的文档目录
start = path.rfind(os.sep) + 1
print start
filename = 'aa.zip'  #压缩后的文件名
z = zipfile.ZipFile(filename,mode = "w",compression = compression)
try:
    for dirpath,dirs,files in os.walk(path):
        for file in files:
            if file == filename or file == "zip.py":
                continue
            print(file)
            z_path = os.path.join(dirpath,file)
            z.write(z_path,z_path[start:])
    z.close()
except:
    if z:
        z.close()
(2)解压
filename = 'aa.zip'  #要解压的文件
filedir = 'data/'  #解压后放入的目录
r = zipfile.is_zipfile(filename)
if r:
    starttime = time.time()
    fz = zipfile.ZipFile(filename,'r')
    for file in fz.namelist():
        print(file)  #打印zip归档中目录
        fz.extract(file,filedir)
    endtime = time.time()
    times = endtime - starttime
else:
    print('This file is not zip file')
print('times' + str(times))
 
  
 
  


你可能感兴趣的:(python)