python3 zipfile模块_Python ZipFile模块详解[通俗易懂]

python3 zipfile模块_Python ZipFile模块详解[通俗易懂]Pythonzipfile模块用来做zip格式编码的压缩和解压缩的,zipfile里有两个非常重要的class,分别是ZipFile和ZipInfo,在绝大多数的情况下,我们只需要使用这两个class就可以了。ZipFile是主要的类,用来创建和读取zip文件而ZipInfo是存储的zip文件的每个文件的信息的。比如要读取一个Pythonzipfile模块,这里假设filename是一个…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

Python zipfile模块用来做zip格式编码的压缩和解压缩的,zipfile里有两个非常重要的class, 分别是ZipFile和ZipInfo, 在绝大多数的情况下,我们只需要使用这两个class就可以了。ZipFile是主要的类,用来创建和读取zip文件而ZipInfo是存储的zip文件的每个文件的信息的。

比如要读取一个Python zipfile 模块,这里假设filename是一个文件的路径:

代码如下:

import zipfile

z =zipfile.ZipFile(filename, ‘r’)

# 这里的第二个参数用r表示是读取zip文件,w是创建一个zip文件

for f in z.namelist():

print f

上面的代码是读取一个zip压缩包里所有文件的名字。z.namelist() 会返回压缩包内所有文件名的列表。

再看看下面一个:

代码如下:

import zipfile

z = zipfile.ZipFile(filename, ‘r’)

for i in z.infolist():

print i.file_size, i.header_offset

这里使用了z.infolist(), 它返回的就是压缩包内所有文件的信息,就是一个ZipInfo的列表。一个ZipInfo对象中包含了压缩包内一个文件的信息,其中比较常用的是 filename, file_size, header_offset, 分别为文件名,文件大小,文件数据在压缩包中的偏移。其实之前的z.namelist()就是读取的ZipInfo中的filename,组成一个 list返回的。

从压缩包里解压缩出一个文件的方法是使用ZipFile的read方法:

代码如下:

import zipfile

z = zipfile.ZipFile(filename, ‘r’)

print z.read(z.namelist()[0])

这样就读取出z.namelist()中的第一个文件,并且输出到屏幕,当然也可以把它存储到文件。下面是创建zip压缩包的方法,与读取的方法其实很类似的:

代码如下:

import zipfile, os

z = zipfile.ZipFile(filename, ‘w’)

# 注意这里的第二个参数是w,这里的filename是压缩包的名字

假设要把一个叫testdir中的文件全部添加到压缩包里(这里只添加一级子目录中的文件):

代码如下:

if os.path.isdir(testdir):

for d in os.listdir(testdir):

z.write(testdir+os.sep+d)

# close() 是必须调用的!

z.close()

面的代码非常的简单。想想还有一个问题,如果我把一个test/111.txt 添加到压缩包里之后我希望在包里它放到test22/111.txt怎么办呢?其实这个就是Python ZipFile模块的write方法中第二个参数的作用了。只需要这样调用:

代码如下:

z.write(“test/111.txt”, “test22/111.txt”)

以上就是我们为大家介绍的有关Python ZipFile模块的相关知识。

时间: 2013-10-29

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/193413.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Dijkstra的最短路径算法

    Dijkstra的最短路径算法Givenagraphandasourcevertexinthegraph,findshortestpathsfromsourcetoallverticesinthegivengraph.Dijkstra’salgorithmisverysimilartoPrim’salgorithmforminimumspanningtree….

    2022年5月15日
  • QXDM 安装[通俗易懂]

    QXDM 安装[通俗易懂]http://download.microsoft.com/download/5/6/7/567758a3-759e-473e-bf8f-52154438565a/dotnetfx.exe

    2022年10月3日
  • 表单提交原理_防止表单重复提交

    表单提交原理_防止表单重复提交1.HTTP是如何提交表单的标签的属性enctype设置以何种编码方式提交表单数据。可选的值有三个:  application/x-www-form-urlencoded:这是默认的编码方式。它只处理表单域里的value属性值,采用这种变法方式的表单会将表单域的值处理成URL方式。  multipart/form-data: 这种编码方式会以二进制流的方式来处理表单数据,这中

    2022年10月6日
  • 外汇平台搭建,外汇交易社区,外汇支付通道,通过区块链如何改变外汇「建议收藏」

    外汇平台搭建,外汇交易社区,外汇支付通道,通过区块链如何改变外汇「建议收藏」在过去几年中,由区块链驱动的比特币对全球财务,特别是外汇行业产生了重大影响。这种创新的加密货币在全球范围内大肆挥霍,并成为头条新闻,很快就能感受到它的存在。虽然比特币很可能继续对外汇行业产生影响,但它实际上是锁定链,这种货币背后的技术,将对外汇行业产生更显着和不可逆转的影响。外汇产业的当前景观外汇市场是全球最大,最具流动性的市场。该行业每周五天,每天24小时开放,主要位于伦敦,而纽约市的每日…

    2022年9月11日
  • Excel宏类型的转换「建议收藏」

    Excel宏类型的转换「建议收藏」FunctiongcVBCur(ByValvVariableAsVariant)AsCurrency’——————————————————————————————-‘Note   :Integra-t.comglobalFunction’—–

    2022年5月27日
  • navicat激活码(JetBrains全家桶)[通俗易懂]

    (navicat激活码)这是一篇idea技术相关文章,由全栈君为大家提供,主要知识点是关于2021JetBrains全家桶永久激活码的内容https://javaforall.net/100143.htmlIntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,上面是详细链接哦~S32PGH0SQB-eyJsaWNlb…

    2022年3月26日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号