zipfile模块——创建zip文件

import zipfile
import os

print(os.getcwd())   #C:\Users\del\PycharmProjects\untitled1\cs

newZip = zipfile.ZipFile(‘C:\\Users\\del\\Desktop\\新建文件夹 (2)\\新建文件夹 (2).zip‘,‘w‘)

newZip.write(‘C:\\Users\\del\\Desktop\\新建文件夹 (2)\\新建文件夹 (2)\\11.txt‘,compress_type=zipfile.ZIP_DEFLATED)

newZip.close()

创建ZIP文件需要使用写模式,即将压缩包名称和写模式代号分别作为ZipFile方法的第一、第二个参数传入。示例代码如下:

>>> import zipfile
>>> newZip = zipfile.ZipFile(‘new.zip’, ‘w’)
>>> newZip.write(‘spam.txt’, compress_type=zipfile.ZIP_DEFLATED)
>>> newZip.close()

以上第二行代码新建了一个名为 new.zip 的压缩文件,并以写模式打开。

第三行中用 ZipFile 对象的 write() 方法添加文件到压缩包中,

该方法的第一个参数为需要添加进去的文件名,

第二个参数为压缩算法,通常使用如上代码中的 ZIP_DEFLATED 即可。

需要注意的是,类似于文件的写操作,如果目录中已存在同名的压缩文件,则原有文件将会被重写!

如果需要继续添加文件到已有的压缩文件中,则在实例化 ZipFile 对象时,使用 ‘a’ 作为第二个参数即可。

==================================================================================================

Python 内置的 zipfile 模块可以对文件(夹)进行ZIP格式的压缩和读取操作。要进行相关操作,首先需要实例化一个 ZipFile 对象。ZipFile 接受一个字符串格式压缩包名称作为它的必选参数,第二个参数为可选参数,表示打开模式,类似于文件操作,有r/w/a三种模式,分别代表读、写、添加,默认为r,即读模式。

1. zip 文件查看

假设当前有如下文件结构:

代码演示如下:

>>> 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() 的方法,该方法返回一个所含该压缩包所有文件及文件夹的字符串列表。可以把返回的列表中的字符串传递到 getinfo() 方法中,以获取特定文件或文件夹的更多信息。getinfo() 方法还拥有以下属性:

  • file_size 可获得原文件或文件夹大小
  • compress_size 或获得压缩后的文件或文件夹大小

2. zip文件解压

利用 ZipFile 对象的 extractall() 方法可以对整个压缩包进行解压。extractall() 方法接受一个绝对路径名称字符串为可选参数,解压后的文件将会入在传入的目录中。示例代码如下:

>>> import zipfile, os
>>> os.chdir(‘C:\\’) # move to the folder with example.zip
>>> exampleZip = zipfile.ZipFile(‘example.zip’)
>>> exampleZip.extractall()
>>> exampleZip.close()

上例中,extractall() 方法没有被传入参数,因为文件被解压到当前的工作目录中。如果被传入的目录不存在,则Python将新建该目录。

也可以利用 ZipFile 对象的 extract() 方法对压缩包中的某个特定文件进行解压,extract() 方法的使用示例如下:

>> exampleZip.extract(‘spam.txt’)
‘C:\\spam.txt’
>>> exampleZip.extract(‘spam.txt’, ‘C:\\some\\new\\folders’)
‘C:\\some\\new\\folders\\spam.txt’
>>> exampleZip.close()

如上所示,当 extract() 方法可接收一个压缩包中的文件名作为参数,将其解压到当前目录中。也可以用一个绝对路径名称字符串作为该方法的第二个参数,将特定文件解压到该目录中,如果该目录不存在,Python程序将新建该目录。

3. 创建和增加文件到 ZIP 文件中

创建ZIP文件需要使用写模式,即将压缩包名称和写模式代号分别作为ZipFile方法的第一、第二个参数传入。示例代码如下:

>>> import zipfile
>>> newZip = zipfile.ZipFile(‘new.zip’, ‘w’)
>>> newZip.write(‘spam.txt’, compress_type=zipfile.ZIP_DEFLATED)
>>> newZip.close()

以上第二行代码新建了一个名为 new.zip 的压缩文件,并以写模式打开。第三行中用 ZipFile 对象的 write() 方法添加文件到压缩包中,该方法的第一个参数为需要添加进去的文件名,第二个参数为压缩算法,通常使用如上代码中的 ZIP_DEFLATED 即可。需要注意的是,类似于文件的写操作,如果目录中已存在同名的压缩文件,则原有文件将会被重写!如果需要继续添加文件到已有的压缩文件中,则在实例化 ZipFile 对象时,使用 ‘a’ 作为第二个参数即可。

原文地址:https://www.cnblogs.com/xiaobaibailongma/p/12381035.html

时间: 2024-08-02 19:36:15

zipfile模块——创建zip文件的相关文章

zipfile模块——从zip文件中 解压缩

全部解压缩到指定路径里: import zipfile import os print(os.getcwd()) #C:\Users\del\PycharmProjects\untitled1\cs exampleZip = zipfile.ZipFile('C:\\Users\\del\\Desktop\\新建文件夹 (2)\\新建文件夹 (2).zip') #exampleZip.extractall() #如果直接解压缩,会解压到当前程序目录中;C:\Users\del\PycharmPr

Python操作Zip文件

Python操作Zip文件 需要使用到zipfile模块 读取Zip文件 随便一个zip文件,我这里用了bb.zip,就是一个文件夹bb,里面有个文件aa.txt. import zipfile # 默认模式r,读 azip = zipfile.ZipFile('bb.zip') # ['bb/', 'bb/aa.txt'] # 返回所有文件夹和文件 print(azip.namelist()) # # 返回该zip的文件名 print(azip.filename) # 压缩文件里bb文件夹下的

【.NET深呼吸】Zip文件操作(1):创建和读取zip文档

.net的IO操作支持对zip文件的创建.读写和更新.使用起来也比较简单,.net的一向作风,东西都准备好了,至于如何使用,请看着办. 要对zip文件进行操作,主要用到以下三个类: 1.ZipFile.表示与一个zip文件操作相关的类.可以使用该类创建zip文件,或者打开zip文件. 2.ZipArchive.表示一个zip文档实例,可以通过它直接从流对象创建zip文档.ZipFile类主要是针对磁盘文件来进行操作,而ZipArchive表示的是zip包,不一定是存放在硬盘上的.zip文件,因为

java解压多目录Zip文件(解决中文乱码问题)--转载

原文地址:http://zhangyongbo.iteye.com/blog/1749439 import java.io.BufferedOutputStream; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.util.Enumeration; import org.apache.tools.zi

zip文件压缩(转)

zip文件结构 上面中的每一行都是一个条目,zip文件就是由一个或者多个条目组成. 条目在Java中对应ZipEntry类 创建zip压缩文件 知道了zip文件结构之后,大概就知道怎么去创建一个zip压缩文件了. 之前,先了解下创建普通的文件都是经过以下几个步骤: 1.创建文件输出流FileOutputStream fout = new FileOutputStream(new File("XXX")); 2.往文件输出流中写入文件内容,fout.write(XXX); 3.关闭输出流

java 解压缩Zip文件 ziputil

package com.lanyuan.assembly.util; import java.io.BufferedOutputStream;import java.io.File;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.util.Enumeration; import org.apache.tools.zip.ZipEntry;import

14Python标准库系列之zipfile模块

Python标准库系列之zipfile模块 The ZIP file format is a common archive and compression standard. This module provides tools to create, read, write, append, and list a ZIP file. This module does not currently handle multi-disk ZIP files. It can handle ZIP file

zip文件压缩

zip文件结构 上面中的每一行都是一个条目,zip文件就是由一个或者多个条目组成. 条目在Java中对应ZipEntry类 创建zip压缩文件 知道了zip文件结构之后,大概就知道怎么去创建一个zip压缩文件了. 之前,先了解下创建普通的文件都是经过以下几个步骤: 1.创建文件输出流FileOutputStream fout = new FileOutputStream(new File("XXX")); 2.往文件输出流中写入文件内容,fout.write(XXX); 3.关闭输出流

通过zipfile解压指定目录下的zip文件

代码: # -*- coding: utf-8 -*- import os import zipfile import platform import multiprocessing # 解压后的文件夹与原来的zip文件同名且在相同目录下 # 确保windows下解压后的文件夹名不乱码 file_encoding = "utf-8" if platform.system() == "Windows": file_encoding = "gbk"