python怎样压缩和解压缩ZIP文件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python怎样压缩和解压缩ZIP文件相关的知识,希望对你有一定的参考价值。

1、说明

python使用zipfile模块来压缩和解压zip文件

2、代码

import os,os.path
import zipfile

def zip_dir(dirname,zipfilename):
    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 tar in filelist:
        arcname = tar[len(dirname):]
        #print arcname
        zf.write(tar,arcname)
    zf.close()
 
 
def unzip_file(zipfilename, unziptodir):
    if not os.path.exists(unziptodir): os.mkdir(unziptodir)
    zfobj = zipfile.ZipFile(zipfilename)
    for name in zfobj.namelist():
        name = name.replace(\'\\\\\',\'/\')
        
        if name.endswith(\'/\'):
            os.mkdir(os.path.join(unziptodir, name))
        else:            
            ext_filename = os.path.join(unziptodir, name)
            ext_dir= os.path.dirname(ext_filename)
            if not os.path.exists(ext_dir) : os.mkdir(ext_dir)
            outfile = open(ext_filename, \'wb\')
            outfile.write(zfobj.read(name))
            outfile.close()
 
if __name__ == \'__main__\':
    zip_dir(r\'d:/python/test\',r\'d:/python/test.zip\')
    unzip_file(r\'d:/python/test.zip\',r\'d:/python/test2\')

执行结果

顺利生成相应文件

3、备注

zip文件格式是通用的文档压缩标准,在zipfile模块中,使用ZipFile类来操作zip文件,下面具体介绍一下:
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。

ZipFile还提供了如下常用的方法和属性:
ZipFile.getinfo(name):

获取zip文档内指定文件的信息。返回一个zipfile.ZipInfo对象,它包括文件的详细信息。将在下面 具体介绍该对象。
ZipFile.infolist()

获取zip文档内所有文件的信息,返回一个zipfile.ZipInfo的列表。
ZipFile.namelist()

获取zip文档内所有文件的名称列表。
ZipFile.extract(member[, path[, pwd]])

参考技术A 使用zlib解压缩字符串:

import zlib

message = 'aaaabbbbccccdddd'
compressed = zlib.compress(message)
decompressed = zlib.decompress(compressed)
print 'original:', repr(message)
print 'compressed:', repr(compressed)
print 'decompressed:', repr(decompressed)

使用zlib解压缩文件

import zlib

def compress(infile, dst, level=9):
infile = open(infile, 'rb')
dst = open(dst, 'wb')
compress = zlib.compressobj(level)
data = infile.read(1024)
while data:
dst.write(compress.compress(data))
data = infile.read(1024)
dst.write(compress.flush())
def decompress(infile, dst):
infile = open(infile, 'rb')
dst = open(dst, 'wb')
decompress = zlib.decompressobj()
data = infile.read(1024)
while data:
dst.write(decompress.decompress(data))
data = infile.read(1024)
dst.write(decompress.flush())

python 压缩和解压缩的浅学习

‘’‘

需求:将N个文件打包成rar格式

功能应用模块,zip.file

作者:琦琦爸爸

’‘’

#引用模块zipfile

import zipfile

# D:\\test\\  这个是将打包完的文件存放的位置,注意“\”需要转义,不然会报错,转义后的为“\\”, test.zip是打包后的文件名。 这个为r‘表示打开一个存在的只读ZIP文件;‘w‘表示清空并打开一个只写的ZIP文件,或创建一个只写的ZIP文件;‘a‘表示打开一个ZIP文件,并添加内容。 

f=zipfile.Zipfile("D:\\test\\test.zip",‘w‘)

#将下面的文件添加到打包文件test.zip文件中

f.write("D:\\test\\1.txt")

f.write("D:\\test\\1.txt")

#关闭,将内容写入磁盘

f.close()

#下面为解压缩

f=zipfile.Zipfile("D:\\test\\test.zip",‘r‘)

#解压以后存放的目录

f.extractall("D:\\test")

f.close()

 

以上是关于python怎样压缩和解压缩ZIP文件的主要内容,如果未能解决你的问题,请参考以下文章

python 压缩和解压缩的浅学习

Java对zip格式压缩和解压缩

Centos之压缩和解压缩命令

(十三)Centos之压缩和解压缩

LInux 压缩和解压缩命令

Linux下的压缩和解压缩命令——zip/unzip