python zipfile压缩_python:用 zipfile 模块压缩文件-压缩文件格式

1.读取 ZIP 文件

要读取 ZIP 文件的内容,首先必须创建一个 ZipFile 对象(请注意大写首字母 Z

和 F)。ZipFile 对象在概念上与 File 对象相似。要创建一个 ZipFile

对象,就调用 zipfile.ZipFile()函数,向它传入一个字符串,表示.zip 文件的文件名。

请注意,zipfile 是 Python 模块的名称,ZipFile()是函数的名称。

例如,在交互式环境中输入以下代码:

>>> import zipfile, os

>>> os.chdir('C:\\') # move to the folder with example.zip

>>> exampleZip = zipfile.ZipFile('example.zip')

>>> exampleZip.namelist()

['spam.txt', 'cats/', 'cats/catnames.txt', 'cats/zophie.jpg']

>>> spamInfo = exampleZip.getinfo('spam.txt')

>>> spamInfo.file_size

13908

>>> spamInfo.compress_size

3828

 >>> 'Compressed file is %sx smaller!' % (round(spamInfo.file_size / spamInfo

.compress_size, 2))

'Compressed file is 3.63x smaller!'

>>> exampleZip.close()

ZipFile 对象有一个 namelist()方法,返回 ZIP 文件中包含的所有文件和文件夹

的字符串的列表。这些字符串可以传递给 ZipFile 对象的 getinfo()方法,返回一个关

于特定文件的 ZipInfo 对象。ZipInfo 对象有自己的属性,诸如表示字节数的 file_size

和 compress_size,它们分别表示原来文件大小和压缩后文件大小。ZipFile 对象表示

整个归档文件,而 ZipInfo 对象则保存该归档文件中每个文件的有用信息。

处的命令计算出 example.zip 压缩的效率,用压缩后文件的大小除以原来文件

的大小,并以%s 字符串格式打印出这一信息。

2.从 ZIP 文件中解压缩

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

前工作目录中。

>>> import zipfile, os

>>> os.chdir('C:\\') # move to the folder with example.zip

>>> exampleZip = zipfile.ZipFile('example.zip')

 >>> exampleZip.extractall()

>>> exampleZip.close()

运行这段代码后,example.zip 的内容将被解压缩到 C:\。或者,你可以向

extractall()传递的一个文件夹名称,它将文件解压缩到那个文件夹,而不是当前工作

目录。如果传递给 extractall()方法的文件夹不存在,它会被创建。例如,如果你用

exampleZip.extractall('C:\\ delicious')取代处的调用,代码就会从 example.zip 中解压

缩文件,放到新创建的 C:\delicious 文件夹中。

ZipFile 对象的 extract()方法从 ZIP 文件中解压缩单个文件。继续交互式环境中

的例子:

>>> exampleZip.extract('spam.txt')

'C:\\spam.txt'

>>> exampleZip.extract('spam.txt', 'C:\\some\\new\\folders')

'C:\\some\\new\\folders\\spam.txt'

>>> exampleZip.close()

传递给 extract()的字符串,必须匹配 namelist()返回的字符串列表中的一个。或

者,你可以向 extract()传递第二个参数,将文件解压缩到指定的文件夹,而不是当

前工作目录。如果第二个参数指定的文件夹不存在,Python 就会创建它。extract()

的返回值是被压缩后文件的绝对路径。

3.创建和添加到 ZIP 文件

要创建你自己的压缩 ZIP 文件,必须以“写模式”打开 ZipFile 对象,即传入'w'

作为第二个参数(这类似于向 open()函数传入'w',以写模式打开一个文本文件)。

如果向 ZipFile 对象的 write()方法传入一个路径,Python 就会压缩该路径所指

的文件,将它加到 ZIP 文件中。write()方法的第一个参数是一个字符串,代表要添

加的文件名。第二个参数是“压缩类型”参数,它告诉计算机使用怎样的算法来压

缩文件。可以总是将这个值设置为 zipfile.ZIP_DEFLATED(这指定了 deflate 压缩

算法,它对各种类型的数据都很有效)。在交互式环境中输入以下代码:

>>> import zipfile

>>> newZip = zipfile.ZipFile('new.zip', 'w')

>>> newZip.write('spam.txt', compress_type=zipfile.ZIP_DEFLATED)

>>> newZip.close()

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

要记住,就像写入文件一样,写模式将擦除 ZIP 文件中所有原有的内容。如果

只是希望将文件添加到原有的 ZIP 文件中,就要向 zipfile.ZipFile()传入'a'作为第二

个参数,以添加模式打开 ZIP 文件。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值