python怎样压缩和解压缩ZIP文件
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python怎样压缩和解压缩ZIP文件相关的知识,希望对你有一定的参考价值。
1、说明
python使用zipfile模块来压缩和解压zip文件
2、代码
import os,os.pathimport 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]])
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文件的主要内容,如果未能解决你的问题,请参考以下文章