文章目录

  • ZipFile对象
    • 写入压缩文件
    • 读取和解压缩
    • 常用属性
  • ZipInfo

ZipFile对象

顾名思义,zipfile是处理zip文件的模块,其中最重要的类是ZipFile,其构造函数为

ZipFile(file, mode='r', compression=ZIP_STORED, allowZip64=True, compresslevel=None, *, strict_timestamps=True)

各参数含义如下

  • file 文件路径或者文件对象
  • mode 文件打开模式,可以为r, w, a, x,表示读、写、追加、新建写入。
  • compression 压缩方案,可以是ZIP_STORED, ZIP_DEFLATED, ZIP_BZIP2ZIP_LZMA
  • allowZip64True时,若文件大于4GiB,zipfile将创建使用ZIP64扩展的ZIP文件;为False则引发异常。
  • compresslevel 为压缩等级,在ZIP_DEFLATED时可选整数0-9,在ZIP_BZIP2时可选整数1-9,其他压缩方案不可用。
  • strict_timestamps 设为False时允许压缩早于1980年以前活2108年之后的文件,但时间戳会设为1980-01-01或2107-12-31

写入压缩文件

下面对读写zip数据做一个简单的示例

import zipfile, os
test = "if you miss the train i'm on" * 500
with zipfile.ZipFile('test.zip', 'w') as z:z.writestr("test.txt", test)

效果如下

其中,z.writestr("test.txt", test)表示将test写入test.txt后,在存档到压缩文件z中。

读取和解压缩

能写就能读,下面来演示一下Zipfile.read的功能

z = zipfile.ZipFile('test.zip', 'r')
z.namelist()        # 读取压缩文件中的文件列表
# ['test.txt']
z.read('test.txt')  # 读取`test.txt`中的内容
# if you miss the train i'm onif you miss the train...

通过printdir可以查看压缩文件中更加详细的文件信息。

>>> z.printdir()
File Name     Modified                  Size
test.txt      2023-01-19 12:32:12       14000

一般来说,通过代码来读写压缩文件是程序员的事儿,程序员要做的往往是给用户提供一个按钮,按下这个按钮可以实现压缩和解压缩。在ZipFile中,extractextract可以便捷地将压缩包里面的文件解压到指定位置,下面代码将z中所有的文件解压到test文件夹中,如果test文件夹不存在,则创建。

z.extractall('test')

常用属性

ZipFile封装的属性和没有参数的常用方法如下

  • filename ZIP 文件的名称
  • debug 要使用的调试输出等级,可设0(默认无输出)到3(最多输出)
  • comment 关联到ZIP文件的字节对象形式的说明
  • close() 关闭归档文件,在退出程序之前必须调用,否则数据不会被写入。
  • namelist() 返回按名称排序的归档成员列表
  • infolist() 返回每个归档成员的 ZipInfo 对象
  • printdir() 打印归档的目录表
  • testzip() 读取归档中的所有文件并检查它们的 CRC 和文件头。 返回第一个已损坏文件的名称,在其他情况下则返回 None。

ZipInfo

通过ZipFile.getinfo(name)返回的是一个ZipInfo对象,如果name为空,则返回压缩包中所有文件的信息列表。ZipInfo对象支持如下属性:

属性 说明 属性 说明
filename 文件名称 compress_type 压缩类型
date_time 文件最后修改时间
comment 文档说明 extr 扩展项数据
create_system 创建该zip的系统
create_version 创建时的PKZIP版本 extract_version 解压所需PKZIP版本
reserved 预留字段,返回0
flag_bits zip标志位 CRC 未压缩文件的CRC-32
volume 文件头的卷标 header_offset 文件头偏移位。
internal_attr 内部属性 external_attr 外部属性
compress_size 压缩后大小 file_size 未压缩时大小

其中date_time的返回值是一个6元组,内容为:年月日时分秒,例如

>>> info = z.infolist()[0]
>>> info.date_time
(2023, 1, 19, 12, 32, 12)

Python处理zip压缩文件相关推荐

  1. Python读写zip压缩文件

    摘要: Python自带模块zipfile可以完成zip压缩文件的读写,而且使用非常方便,下面我们就来演示一下Python读写zip文件. Python读zip文件 下面的代码给出了用Python读取 ...

  2. Python读写zip压缩文件的方法

    Python 内置的 zipfile 模块可以对文件(夹)进行ZIP格式的压缩和读取操作.要进行相关操作,首先需要实例化一个 ZipFile 对象.ZipFile 接受一个字符串格式压缩包名称作为它的 ...

  3. Python将Pandas中Dataframe数据保存为gzip/zip文件:gzip压缩文件、zip压缩文件

    Python将Pandas中Dataframe数据保存为gzip/zip文件:gzip压缩文件.zip压缩文件 目录 Python将Pandas中Dataframe数据保存为gzip/zip文件:gz ...

  4. 暴力破解(一)——python脚本暴力破解 加密的zip压缩文件

    简介: zip格式是常见的压缩文件格式,它支持压缩时设置解压密码:有两种加密方式:1传统加密方式和普通的加密方式.传统加密方式是一种比较简单的加密方式,现在一般很少有人使用,而且压缩时 系统默认选择的 ...

  5. Python处理各种压缩文件(bzip2,gzip,zip)

    原文地址:Python处理各种压缩文件(bzip2,gzip,zip) Python中有一个gzip模块来处理gzip文件 读取gzip文件: 1 2 3 4 import gzip f = gzip ...

  6. python压缩文件操作_Python tar、zip压缩文件操作方法

    python语言源码练习,tar.zip压缩文件操作方法参考示例. import os import threading, zipfile import tarfile class AsyncZip( ...

  7. [Python] 读取 rar/zip 压缩文件

    一. 读取 rar 文件 Python 中 python-unrar 模块依赖于 UnRAR library, 所以需要先安装 UnRAR library 1. 安装 UnRAR library 在官 ...

  8. 用python的进行压缩文件

    用python的进行压缩文件 对于zipfile的用法很多地方已经讲的很详细了,例如:http://www.cnblogs.com/zhengyuxin/articles/1956178.html 一 ...

  9. 用Python创建gzip压缩文件

    用Python创建gzip压缩文件 准备把所有文章中的图片链接全部更改到二级域名上.因为数据量比较大,为了方便修改,先将数据库内容导出为数据库脚本文件(后缀名为.sql),直接批量替换后再通过phpM ...

最新文章

  1. P3398仓鼠(LCA)
  2. dubbo官方文档中文_Pandas中文官方文档:基础用法5
  3. Mysql安装 定期弹出黑框作用及关闭
  4. 银行家舍入VS四舍五入(下):.NET发现之旅(四)
  5. [css] 写一个动画,向上匀速移动100px,向下以1.5倍速度移动200px,一直反复循环
  6. 软件测试用例项目写作,通用测试用例写作方法
  7. 可应用于实际的14个NLP突破性研究成果(二)
  8. How to Install Snapd and Snap applications on CentOS 7
  9. 如何评价周志华深度森林模型
  10. 男人有钱还是没钱,只需要关注他这三点,就明白了
  11. Day02 目录和文件的管理(ADMIN02)
  12. 1.4多媒体计算机系统教案,1.4 多媒体计算机系统教案3
  13. 如何一小时登上微信头脑王者王者段位
  14. gbd调试的基本使用方法
  15. 为什么单片机只有可以整除8的特殊寄存器能够位寻址?
  16. 小程序前端view内容重叠问题
  17. 15分钟详解 Python 安全认证的那些事儿~
  18. php session header,php session header()重定向后丢失 - php
  19. 《数字图像处理原理与实践(MATLAB版)》一书之代码Part3
  20. BT3amp;spoonwep无线破解与Q3amp;spoonwep无线破解哪个容易

热门文章

  1. 利用迭代法求平方根——迭代法开平方运算
  2. 简单算法生成的“英语“词汇
  3. mysql存储ios表情_MySQL中支持emoji表情的存储
  4. IPXE+WinPE+Ghost+VHD+极域在机房维护中的应用
  5. 区块链倪老师:写给区块链初创者的一封信(二)
  6. 接口测试平台167:并发报告问题解决
  7. CMMI-立项管理流程
  8. 项目管理之项目合同变更
  9. 微信中网站域名域名被腾讯封锁、被屏蔽、被和谐后的解决方法
  10. 在H5页面中,点击链接跳转关注公众号的简单方法