Python zipfile_zipfile

Python zipfile_zipfilezipfile阅读:12164评论:0ZIP是通用的归档和压缩格式。zipfile模块提供了通用的创建、读取、写入、附加和显示压缩文件的方法,你可以简单地把它理解为Python中的zip解压缩软件。该模块可以解密带有密码的压缩文件,但不提供附加密码的压缩功能。定义的类和异常classzipfile.ZipFile模块最重要的类。用于读写ZIP文件。classzipfile.PyZipFile…

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

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

zipfile

阅读: 12164

评论:0

ZIP是通用的归档和压缩格式。zipfile模块提供了通用的创建、读取、写入、附加和显示压缩文件的方法,你可以简单地把它理解为Python中的zip解压缩软件。该模块可以解密带有密码的压缩文件,但不提供附加密码的压缩功能。

定义的类和异常

class zipfile.ZipFile

模块最重要的类。用于读写ZIP文件。

class zipfile.PyZipFile

创建包含Python库的ZIP归档文件的类

class zipfile.ZipInfo(filename=’NoName’, date_time=(1980, 1, 1, 0, 0, 0))

用于显示ZIP文件信息的类。ZIP对象的getinfo()或infolist()方法会返回一个该类的实例。filename是ZIP文件的完整名称。date_time是一个包含6个元素的元组,描述文件最近修改时间。

zipfile.is_zipfile(filename)

如果文件是个ZIP文件则返回True,否则False。

zipfile.ZIP_STORED

未压缩的归档文件的数字常数。

zipfile.ZIP_DEFLATED

常用的ZIP压缩方法。

zipfile.ZIP_BZIP2

BZIP2压缩方法的数字常量。

zipfile.ZIP_LZMA

LZMA压缩方法的数字常量。

exception zipfile.BadZipFile

ZIP文件被损坏异常。3.2版本新增。

exception zipfile.LargeZipFile

当需要ZIP64功能,但未开启该功能时弹出异常。

ZipFile对象

class zipfile.ZipFile(file, mode=’r’, compression=ZIP_STORED, allowZip64=True)

打开一个ZIP文件。返回的也是一个类似文件的ZipFile对象,可以读写。

file可以是一个文件地址字符串、文件类对象或地址类对象。mode参数为r时,表示读取一个已经存在的文件;为w的时候表示覆盖或写入一个新文件;为a时表示在已有文件后追加;为x时表示新建文件并写入。x模式下,如果文件名已经存在,则抛出FileExistsError异常。这些特点和open()方法打开文件一样样的。

compression指明压缩格式,支持ZIP_STORED, ZIP_DEFLATED, ZIP_BZIP2和ZIP_LZMA。使用不支持的格式会抛出NotImplementedError异常。默认是ZIP_STORED格式。如果指定为ZIP_DEFLATED, ZIP_BZIP2或者ZIP_LZMA格式,但对应的支持模块zlib, bz2或者lzma不可用,则抛出RuntimeError异常。

当文件大小超过4GB时,将使用ZIP64扩展(默认启用)。

在w/x/a模式下,如果没有写入任何数据就close了,则会生成空的ZIP文件。

ZipFile也是一种上下文管理器(3.2版本新特性),同样支持with语句,如下例子所示:

with ZipFile(‘spam.zip’, ‘w’) as myzip:

myzip.write(‘eggs.txt’)

ZipFile.write(filename, arcname=None, compress_type=None)

往ZIP文件里添加新文件,单个文件可以重复添加,但是会弹出警告。如果指定arcname参数,则在ZIP文件内部将原来的filename改成arcname。例如z.write(“test/111.txt”, “test22/111.txt”)

import zipfile

import os

z = zipfile.ZipFile(“test.zip”, “w”)

z.write(r”d:\test\1.txt”) # 注意路径的写法

z.write(r”d:\test\2.txt”)

z.write(r”d:\\test\test.txt”)

z.write(r”d:\\test\test.py”)

z.close()

print(os.getcwd())

ZipFile.close()

确保压缩文件被正确关闭。

ZipFile.getinfo(name)

返回一个被压缩成员的ZipInfo对象。如果ZIP文件中没有该名字,将抛出异常。

ZipFile.infolist()

返回一个包含ZIP文件内所有成员信息的ZipInfo对象。

ZipFile.namelist()

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

ZipFile.open(name, mode=’r’, pwd=None, *, force_zip64=False)

访问档案中的指定文件。pwd是解压密码。该方法也是个上下文管理器,支持with语法。

with ZipFile(‘spam.zip’) as myzip:

with myzip.open(‘eggs.txt’) as myfile:

print(myfile.read())

r模式为只读模式,提供read(), readline(), readlines(), __iter__(), __next__()等方法.

w模式为写入模式,支持write()方法。此时对ZIP文件内其它成员的读写将抛出ValueError异常。

>>> import zipfile

>>> z = zipfile.ZipFile(r”d:\test.zip”)

>>> z.namelist()

[‘test/1.txt’, ‘test/2.txt’, ‘test/test.txt’, ‘test/test.py’]

>>> z.infolist()

[, , , ]

>>> z.getinfo(“test/1.txt”)

>>> t = z.open(“test/1.txt”)

>>> ret = t.read()

>>> ret

b’asdasdasd’

ZipFile.extract(member, path=None, pwd=None)

解压单个文件。核心方法之一。将ZIP文件中的某个成员解压到当前目录。member必须是完整名,path是指定的解压目录。解压的过程不会破坏原压缩文件。

ZipFile.extractall(path=None, members=None, pwd=None)

批量解压文件。默认是全部解压。核心方法之一。

>>> z.extract(“test/1.txt”)

‘C:\\Python36\\test\\1.txt’

>>> z.namelist()

[‘test/1.txt’, ‘test/2.txt’, ‘test/test.txt’, ‘test/test.py’]

>>> z.extractall()

>>> z.namelist()

[‘test/1.txt’, ‘test/2.txt’, ‘test/test.txt’, ‘test/test.py’]

>>> z.wirte(r”d:\3.txt”)

Traceback (most recent call last):

File “”, line 1, in

z.wirte(r”d:\3.txt”)

AttributeError: ‘ZipFile’ object has no attribute ‘wirte’

>>> z.close()

>>> z = zipfile.ZipFile(r”d:\test.zip”, “w”)

>>> z.namelist()

[]

>>> z.write(r”d:\3.txt”)

>>> z.close()

>>> z = zipfile.ZipFile(r”d:\test.zip”, “a”)

>>> z.write(r”d:\3.txt”)

Warning (from warnings module):

File “C:\Python36\lib\zipfile.py”, line 1349

return self._open_to_write(zinfo, force_zip64=force_zip64)

UserWarning: Duplicate name: ‘3.txt’

>>> z.write(r”d:\4.txt”)

>>> z.namelist()

[‘3.txt’, ‘3.txt’, ‘4.txt’]

>>> z.close()

ZipFile.printdir()

在stdout上打印ZIP文件的目录表。

ZipFile.setpassword(pwd)

设置通用的解压密码,用于解压加密压缩文件。

ZipFile.read(name, pwd=None)

从已打开的ZIP文件成员中读取数据。

ZipFile.testzip()

校验ZIP文件完整性。

ZipFile.writestr(zinfo_or_arcname, data[, compress_type])

往ZIP文件里添加字符串类型数据

ZipFile.filename

ZIP文件的名字

ZipFile.debug

调试输出的级别。从0到3。

ZipFile.comment

ZIP文件的注释内容。

总结

zipfile模块其实很简单,记住下面几个重要的方法就可以了。

方法

用途

z = zipfile.ZipFile()

打开或者新建一个zip文件对象

z.write()

添加文件到压缩包内

z.infolist()

查看压缩包内的文件信息

z.extract()

解压单个文件

z.extractall()

解压所有文件

z.close()

关闭压缩文件

评论总数: 0

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

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

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


相关推荐

  • idea社区版_idea社区版够用吗

    idea社区版_idea社区版够用吗IDEA官网地址:https://www.jetbrains.com/idea/download/#section=windows下载社区版后,点击安装,就进行傻瓜式的安装了。以上两个步骤中有一个点击next的时候时间会稍稍有点久,耐心等待一下就好了。点击安装,IDEA社区版就安装完成了,安装好之后打开IDEA工具,会有如下提示:我是第一次使用,直接选择Donotimportsettings就行了。到这里就进入IDEA工具了,选择你喜欢的主题风格,当然这还不算正式的完成,我

    2025年11月29日
    8
  • 模仿学习对比强化学习「建议收藏」

    模仿学习对比强化学习「建议收藏」模仿学习介绍模仿学习是将专家经验作为样本进行强监督学习的一种方法。模仿学习对比强化学系模仿学习优点:1.简单、稳定的监督学习过程缺点:1.需要提供榜样行为数据2.需要处理多解型行为(例如绕过障碍物,可以从左边或者右边,但是专家数据不一定覆盖所有行为,可以用多元高斯分布去等方法去处理)3.不能超越人类水平强化学习优点:1.可以超越人类水平缺点:1.需要设置奖励函数2.必须解决策略探索性问题3.训练可能不收敛、不稳定结合模仿学习和强化学习:Pretrain&Finetune

    2026年1月21日
    4
  • 分别用N-S图和PAD表示下面的程序流程图_程序流程图,n-s图和pad图是

    分别用N-S图和PAD表示下面的程序流程图_程序流程图,n-s图和pad图是例题:某程序流程图如右图所示,请分别用 N-S图和PAD图表示。PAD图:N-S:盒图2.计算n阶乘的程序N-S图,PAD图

    2022年8月13日
    7
  • 学生选课管理系统的数据库设计_选课系统数据库设计

    学生选课管理系统的数据库设计_选课系统数据库设计学生选课管理系统的设计为选课及成绩管理提供了一个良好的工具,此系统基本实现了设计的要求,即登录系统(通过用户名和密码),管理(录入、查询、修改和删除)学生、课程基本资料,管理(录入、查询、修改和删除)学生所选课程成绩,统计每个学生的总分、平均分以及排名,修改用户密码等功能。在此基础上,我还对系统进行了改进,特别是加强了查询的功能,使我们能更直观、有效地查询到我们想要的数据。

    2022年10月15日
    3
  • Qt中使用匿名函数lambda表达式

    Qt中使用匿名函数lambda表达式

    2021年11月20日
    34
  • bs架构和cs架构_cs bs区别

    bs架构和cs架构_cs bs区别C/S与B/S区别:Client/Server是建立在局域网的基础上的.Browser/Server是建立在广域网的基础上的.1.硬件环境不同:C/S一般建立在专用的网络上,小范围里的网络环境,局域网之间再通过专门服务器提供连接和数据交换服务.B/S建立在广域网之上的,不必是专门的网络硬件环境,例与电话上网,租用设备.信息自己管理.有比C/S更强的适应范围,一般只要有操作系统和浏览器就行2.对安全…

    2025年10月18日
    4

发表回复

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

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