writeas年下()

压缩包也是我们日常工作中经常接触到的一种文件格式。压缩文件通常有。zip,。rar,. 7z等等。在Python中,还有一个专门用于操作压缩包文件的第三方模块z

压缩包也是我们日常工作中经常接触到的一种文件格式。压缩文件通常有。zip,。rar,. 7z等等。在Python中,还有一个专门用于操作压缩包文件的第三方模块zipfile。听这个名字就知道是用来操作压缩包文件的。这个第三方模块也是我们课程的重点。让我们一起来看看吧。

1. zipfile 模块介绍

Zip文件格式是一种通用的文档压缩标准。在ziplib模块中,提供了创建、读取、写入、附加和显示压缩文件等ZipFile类操作。

1.1 安装

Zipfile是Python的第三方库,使用前需要通过以下命令安装:

安装zipfile 1.2使用步骤步骤1:导入zipfile模块

导入zipfile步骤2:实例化zipfile对象

z = zipfile。ZipFile(文件,模式= & # 39;r & # 39)打开或新建一个zip文件对象,第一个参数是文件地址,第二个参数是打开方式。当模式参数为’ R ‘时,表示读取现有文件,’ W ‘表示覆盖或写入新文件,’ A ‘表示追加到现有文件。

第三步:压缩文件。

通过zipfile模块提供的方法对压缩文件进行创建、读取、解压缩等操作。

步骤4:关闭压缩文件。

z = zipfile。ZipFile(文件,模式= & # 39;r & # 39)…省略部分代码z.close()注意:使用zipfile后,必须在退出程序前调用close()方法,否则将不会写入关键记录数据。

2. 使用 zipfile 模块进行压缩与解压缩

现在D:\code目录下有code.zip,内容如下图所示。

writeas年下()插图

接下来,zipfile模块操作压缩文件。zipfile模块操作压缩文件的常用方法见下表。

方法名称

形容

名称列表()

返回ZIP文件中所有成员的名字列表。

写()

将文件添加到压缩包中

提取(成员[,路径[,密码]])

解压缩单个文件,参数members表示zipfile对象中的一个文件名,path是要解压缩的目的路径,默认是压缩包所在的路径,pwd是压缩包密码,默认没有密码。

extract all([路径[,成员[,pwd]])

要提取所有文件,参数path是要提取的目的路径,默认值是压缩包所在的路径。members的默认值是压缩包文件中所有文件名的列表,也可以单独指定。pwd是压缩包密码,默认没有密码。

让我们具体看看每种方法的用法:

namelist () 使用:

导入zipfile,oszipFile = zipfile。ZipFile(os.path.join(os.getcwd(),& # 39;code.zip & # 39))print(zip file . name list())# output:[& # 39;code/& # 39;, 'code/index . py & # 39;, 'code/new image/& # 39;, 'code/write PPT . py & # 39;, 'code/write word . py & # 39;]代码解释:namelist()方法获取压缩包中所有文件的名称,并以列表形式返回。首先通过Zipfile实例化ZipFile对象,其中压缩文件通过OS模块的join方法拼接,并返回一个绝对路径。通过namelist()方法打印输出:

['code/& # 39;, 'code/index . py & # 39;, 'code/new image/& # 39;, 'code/write PPT . py & # 39;, 'code/write word . py & # 39;]write()使用:import zipfile,OS zip file = zip file . zip file(OS . path . join(OS . getcwd(),& # 39;code.zip & # 39),'一& # 39;)zip file . write(& # 34;test.txt & # 34)print(zip file . name list())# output:[& # 39;code/& # 39;, 'code/index . py & # 39;, 'code/new image/& # 39;, 'code/write PPT . py & # 39;, 'code/write word . py & # 39;,'code/test . txt & # 39;]代码解释:write()方法是在压缩文件中添加一个文件。在D:\code目录下,创建一个test.txt文件,通过wirte()方法将其添加到已有的压缩文件code.zip中。执行完成后,用namelist()方法重写压缩文件中所有成员名称的列表,输出[& # 39;code/& # 39;, 'code/index . py & # 39;, 'code/new image/& # 39;, 'code/write PPT . py & # 39;, 'code/write word . py & # 39;,'code/test . txt & # 39;]。在上面的代码中应该注意:

将内容写入压缩文件时,注意在zipFile实例处修改模式。默认值为“R”,这意味着它是只读的,不能写入。设置为“W”后,可以写入,但会覆盖原压缩文件中的内容。如果要追加,设置为“A”即可。

extract () 使用:

导入zipfile,oszipFile = zipfile。ZipFile(os.path.join(os.getcwd(),& # 39;code.zip & # 39))for file in zip file . namelist():zipfile . extract(file)zipfile . close()代码解释:extract()方法解压单个压缩文件,D:\code\code.zip结合代码中的name list()方法解压。解压后的效果如下图所示。

writeas年下()插图(1)

extractall () 使用:

导入zipfile,oszipFile = zipfile。ZipFile(os.path.join(os.getcwd(),& # 39;code.zip & # 39))zipfile . extractall()zipfile . close()代码解释:extract all()方法是将zip文档中的所有文件提取到指定的目录下,默认为压缩包所在的路径,即当前目录。代码执行后效果和extract()结合namelist()方法解压是一样的。

3. zipfile 模块实战

最后一节用os模块封装了程序遇到异常情况时记录错误日志文件的方法。本节的zipfile模块实际上是在上一节代码的基础上实现的。

存储在服务器上的错误日志文件需要在一定时间内下载。为了防止文件在下载过程中丢失或被篡改,通常会创建压缩包。然而,手工创建无疑是耗时、费力且容易出错的。此时可以结合os模块使用zipfile模块,这样就可以将2020年每个月的错误日志记录在一个文件夹中,并创建一个相对压缩的文件,比如1月对应1.zip,2月对应2.zip,目前服务器上1-11月的错误日志文件的存储结构如下图所示。

以一月份为例。一月文件夹下的文件存储结构如下图所示。

writeas年下()插图(2)

writeas年下()插图(3)

根据上述需求背景,封装的代码如下:

Import zipfileimport os#使要生成的压缩文件的路径filepath = & # 34。/2020"#创建压缩文件def createzipfile(month): # zip文件名zipName = month+& # 39;。zip & # 39f = zipfile。ZipFile(zipName,& # 39;一& # 39;)#遍历当前文件夹,查找os.walk中的目录路径、目录名、文件名(file path+& # 34;/"+month):对于filenames中的Filename:f . write(OS . path . join(dirpath,Filename)) f.close()#遍历当前目录中os.listdir (filepath)中item的文件夹:#调用创建压缩文件的方法,createzipfile(str(item))。代码解释:通过OS获取目录中所有要压缩的文件夹。listdir()方法,即get 1,2,3,4…,遍历时调用createzipfile。在createzipfile()方法中。ZipFile用于创建压缩文件。写入压缩文件时,os.walk()方法遍历当前月份的目录,嵌套在for…in循环中,将文件写入压缩文件。代码执行后,创建的压缩文件如下图所示。

writeas年下()插图(4)

writeas年下()插图(5)

4. 小结

在本课程中,我们主要学习zipfile模块的使用。本课程的要点如下:

了解 zipfile 模块作用及使用步骤;掌握 zipfile 模块中压缩与解压缩操作的使用方法;

writeas年下()插图(6)

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。

作者:美站资讯,如若转载,请注明出处:https://www.meizw.com/n/188541.html

发表回复

登录后才能评论