当前位置:首页 » 编程语言 » python压缩zip文件

python压缩zip文件

发布时间: 2023-11-27 16:12:30

Ⅰ 用python解压图片并打印代码

import zipfile

# 传入压缩文件zfile.zip获取相关信息

zip_file = zipfile.ZipFile('zfile.zip')

# 获取压缩文件中的内容

f_content = zip_file.namelist()

# 压缩前的大小

f_size = zip_file.getinfo('zfile/a.txt').file_size

# 压缩后的大小

c_size = zip_file.getinfo('zfile/a.txt').compress_size

ZipFile 对象有一个 namelist()方法,返回 ZIP 文件中包含的所有文件和文件夹 的字符串的列表。这些字符串可以传递给 ZipFile 对象的 getinfo()方法,返回一个关 于特定文件的 ZipInfo 对象。ZipInfo 对象有自己的属性,诸如表示字节数的 file_size 和 compress_size,它们分别表示原来文件大小和压缩后文件大小。ZipFile 对象表示 整个归档文件,而 ZipInfo 对象则保存该归档文件中每个文件的有用信息。

从 ZIP 文件中解压缩

ZipFile 对象的 extractall()方法从 ZIP 文件中解压缩所有文件和文件夹,放到当 前工作目录中。

import zipfile

zip_file = zipfile.ZipFile('zfile.zip')

# 解压

zip_extract = zip_file.extractall()

zip_extract.close()

运行这段代码后, example.zip 的内容将被解压缩到 C:。 或者, 你可以向 extractall()传递的一个文件夹名称,它将文件解压缩到那个文件夹,而不是当前工作 目录。如果传递给 extractall()方法的文件夹不存在,它会被创建。例如,如果你用 exampleZip.extractall('C: delicious')取代处的调用,代码就会从 example.zip 中解压 缩文件,放到新创建的 C:delicious 文件夹中。

ZipFile 对象的 extract()方法从 ZIP 文件中解压缩单个文件。

创建和添加到 ZIP 文件

要创建你自己的压缩 ZIP 文件,必须以“写模式”打开 ZipFile 对象,即传入'w' 作为第二个参数(这类似于向 open()函数传入'w',以写模式打开一个文本文件)。

如果向 ZipFile 对象的 write()方法传入一个路径,Python 就会压缩该路径所指 的文件,将它加到 ZIP 文件中。write()方法的第一个参数是一个字符串,代表要添 加的文件名。第二个参数是“压缩类型”参数,它告诉计算机使用怎样的算法来压 缩文件。可以总是将这个值设置为 zipfile.ZIP_DEFLATED(这指定了 deflate 压缩 算法,它对各种类型的数据都很有效)。

import zipfile

zip_file = zipfile.ZipFile('new.zip','w')

# 把zfile整个目录下所有内容,压缩为new.zip文件

zip_file.write('zfile',compress_type=zipfile.ZIP_DEFLATED)

# 把c.txt文件压缩成一个压缩文件

# zip_file.write('c.txt',compress_type=zipfile.ZIP_DEFLATED)

zip_file.close()

这段代码将创建一个新的 ZIP 文件,名为 new.zip,它包含 spam.txt 压缩后的内容。

要记住,就像写入文件一样,写模式将擦除 ZIP 文件中所有原有的内容。如果 只是希望将文件添加到原有的 ZIP 文件中,就要向 zipfile.ZipFile()传入'a'作为第二 个参数,以追加模式打开 ZIP 文件。

Ⅱ Python打开zip文件

    Zip文件格式是通用的文档压缩标准。自1.6版本起,Python中zipfile模块能够直接处理zip文件里的数据,例如需要将对应目录或多个文件打包或压缩成zip格式,或者需要查看一个zip格式的归档文件中部分或者所有文件同时避免讲这些文件展开到磁盘上。使用ZipFile类来操作zip文件。

创建一个ZipFile对象,表示一个zip文件。

     参数file:文件的路径或者类似文件对象

     参数mode:读"r",写入"w",添加"a"

     参数compression: ZIP_STORED(无压缩),ZIP_DEFLATED(压缩,需要zlib支持)

     参数allowZip64:默认情况下报错,将其设为True,ZipFile将用ZIP64扩展进行创建文件。

下面示例演示了读取一个zip文档,将文档里所有文件解压到名为"work"的文件里。

import zipfile

if __name__ == "__main__":

    zFile = zipfile.ZipFile("F:\\txt.zip","r")

    #ZipFile.namelist():获取ZIP文档内所有文件的名称列表

    for fileM in zFile.namelist():

        zFile.extract(fileM,"F:\\work")

        zFile.close()

read(self,name,pwd=None)获取ZIP文档内文件的二进制数据

下面例子演示了使用read方法获取ZIP文档中mango.txt文件的数据,并写到.txt文件中

import zipfile 

if __name__ == "__main__":

    zipFile = zipfile.ZipFile('F:\\test.zip','r')

    data = zipFile.read("mango.txt")

    (lambda f,d:(f.write(d),f.close()))(open("F:\\.txt,'w"),data)

    zipFile.close()

write(self, filename, arcname=None, compress_type=None)将指定文件写入ZIP文档中

     参数filename:需要写入文件的路径

     参数arcname:文件写入ZIP文档后保存的文件名

     参数compress_type:压缩方法(ZIP_STORED或ZIP_DEFAULED)

下面离子演示了创建一个zip文档,将test.docx文件写入压缩文档里面。

import zipfile

if __name__ == "__main__":

    zipFile = zipfile.ZipFile("F:\\test.zip","w")

    zipFile.write("F:\\test.docx","ok.docx",zipfile.ZIP_DEFLATED)

    zipFile.close()

getinfo(name)返回一个ZipInfo类的对象。

import zipfile

if __name__ == "__main__":

    zipInfo = zipFile.getinfo(ok.docx)

    print("filename:",zipInfo.filename)

    print("date_time:",zipInfo.date_time)

常用函数

关闭归档文件,你必须在退出程序之前调用close()否则将不会写入关键记录数据。

返回一个ZipInfo对象,其中包含有关归档成员name的信息。针对一个目前并不包含于归档中的名称调用getinfo()将会引发KeyError。

   返回一个列表,其中包含每个归档成员的ZipInfo对象。如果是打开一个现有归档则这些对象的排列顺序与他们对于条目在磁盘上的实际ZIP文件中的顺序一致。

返回按名称排列的归档成员列表。

以二进制文件类对象的形式访一个归档成员。name可以是归档内某个文件的名称也可以是某个ZipInfo对象。如果包含了mode形参,则它必须为"r"(默认值)或"w"。pwd为用于解密已加密Zip文件的密码。

open()也是一个上下文 管理器,因此支持with语句:

with ZipFile('spam.zip') as myzip:

    with myzip.open('eggs.txt') as myfile:

    print(myfile.read())

如果mode为“r”则文件类对象(ZipExtFile)将只读并且提供下列方法:read(),readline(),readlines(),seek(),tell(),__iter__(),__next__()。这些对象可独立于ZipFile进行操作。

如果mode='w'则返回一个可写入的文件句柄,它将支持write()方法。当一个可写入的文件句柄被打开时,尝试读写ZIP文件中的其他文件将会引发ValueError。

当写入一个文件时,如果文件大小不能预先确定但是可能超过2GiB,可传入force_zip64=True以确保标头格式能够支持超大文件。如果文件大小可以预先确定,则在构造ZipInfo对象时应设置file_size,并将其作name形参。

从归档中提取一个成员放入当前工作目录;member必须为成员的完整名称或ZipInfo对象。成员的文件信息会尽可能精确地被提取。path指定一个要提取到的不同目录。member可以是一个文件名或ZipInfo对象。pwd是用于解密文件的密码。返回所创建的经正规化的路径(对应于目录或新文件)。

从归档中提取出所有成员放入当前工作目录。path指定一个要提取到的不同的目录。members为可选项且必须为namelist()所返回列表的一个子集。pwd是用于解密文件的密码。

警告:绝不要未经预先检验就从不可靠的源中提取归档文件。 这样有可能在  path  之外创建文件,例如某些成员具有以 "/" 开始的文件名或带有两个点号 ".." 的文件名。 此模块会尝试防止这种情况。 参见  extract()  的注释。

将归档是目录表打印到sys.stdout.

设置pwd为用于提取已加密文件的默认密码。

返回归档中文件name的字节数据。name是归档中文件的名称,或是一个ZipInfo对象。归档必须以读取或追加方式打开。pwd为用于已加密文件的密码,并且如果指定该参数则它将覆盖通过setpassword()设置的默认密码。 on a ZipFile that uses a compression method 在使用  ZIP_STORED  ,  ZIP_DEFLATED ,  ZIP_BZIP2  或  ZIP_LZMA  以外的压缩方法的 ZipFile 上调用  read()  将引发  NotImplementedError 。 如果相应的压缩模块不可用也会引发错误。

读取归档中的所有文件并检查他们的CRC和文件头。返回第一个已损坏文件的名称,在其他情况下则返回None。

将名为filename的文件写入归档,给予的归档名为arcname(默认情况下将与filename一致,但是不带驱动器盘符并会移除开头的路径分隔符)。compress_type如果给出,它将覆盖作为构造器compression形参对于新条目所给出的值。类似地,compresslevel如果给出也将覆盖构造器。归档必须使用"w","x“或"a"模式打开。

将一个文件写入归档。 内容为  data ,它可以是一个  str  或  bytes  的实例;如果是  str ,则会先使用 UTF-8 进行编码。  zinfo_or_arcname  可以是它在归档中将被给予的名称,或者是  ZipInfo  的实例。 如果它是一个实例,则至少必须给定文件名、日期和时间。 如果它是一个名称,则日期和时间会被设为当前日期和时间。 归档必须以 'w', 'x' 或 'a' 模式打开。

ZIP文件的名称

Ⅲ python压缩文件设置解压密码_zipfile.setpassword(bytes('pass',"utf-8"))为什么解压不用密码

将 readability 目录中的文件压缩到脚本所在目录的 readability.zip 文件中,保持相同的文件结构,然后打印出生成的压缩包 的文件列表,再用两种方式分别解压文件到脚本所在目录的 output 目录和 output/bak 目录中。

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

1、说明

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

2、代码

importos,os.path
importzipfile

defzip_dir(dirname,zipfilename):
filelist=[]
ifos.path.isfile(dirname):
filelist.append(dirname)
else:
forroot,dirs,filesinos.walk(dirname):
fornameinfiles:
filelist.append(os.path.join(root,name))

zf=zipfile.ZipFile(zipfilename,"w",zipfile.zlib.DEFLATED)
fortarinfilelist:
arcname=tar[len(dirname):]
#printarcname
zf.write(tar,arcname)
zf.close()


defunzip_file(zipfilename,unziptodir):
ifnotos.path.exists(unziptodir):os.mkdir(unziptodir)
zfobj=zipfile.ZipFile(zipfilename)
fornameinzfobj.namelist():
name=name.replace('\','/')

ifname.endswith('/'):
os.mkdir(os.path.join(unziptodir,name))
else:
ext_filename=os.path.join(unziptodir,name)
ext_dir=os.path.dirname(ext_filename)
ifnotos.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]])

Ⅳ python 用zipfile对文件进行压缩并加密(不让人解压缩并修改文件)如何实现

>>>importzipfile
>>>_zipfile=zipfile.ZipFile(r'C:/Python27/test.zip','w',zipfile.ZIP_DEFLATED)
>>>_zipfile.write(r'C:/Python27/test')
>>>_zipfile.setpassword('nimei')
>>>_zipfile.close()

热点内容
安卓游戏和最好玩的游戏叫什么 发布:2025-01-25 07:57:39 浏览:509
隐身访问空间什么心态 发布:2025-01-25 07:42:12 浏览:251
qq推荐上传照片取消 发布:2025-01-25 07:36:22 浏览:139
windows2012服务器电脑重启 发布:2025-01-25 07:35:13 浏览:725
eval与php 发布:2025-01-25 07:24:28 浏览:37
服务器电脑初次上网 发布:2025-01-25 07:21:42 浏览:670
升级android6 发布:2025-01-25 07:17:59 浏览:780
多人直播源码 发布:2025-01-25 07:16:38 浏览:467
机房服务器如何安装系统 发布:2025-01-25 07:03:02 浏览:938
linux命令for循环 发布:2025-01-25 06:58:07 浏览:269