博客
关于我
python zipfile模块学习笔记(一)
阅读量:801 次
发布时间:2023-03-06

本文共 1996 字,大约阅读时间需要 6 分钟。

ZIP文件格式是数据存储和压缩的标准形式之一,ZIP模块为操作ZIP文件提供了多种功能,包括创建、读取、写入、附加和列出。ZIP64扩展支持让文件大小超过4GB,能够解压加密的ZIP文件,但解密速度较慢。

1. 测试是否为ZIP文件

使用is_zipfile()函数可以判断文件是否为ZIP格式,返回布尔值。若文件不存在或不是ZIP文件,函数返回False。以下代码示例:

#!/usr/bin/pythonimport zipfilefor filename in ['print_name.py', 'python.zip', 'uwsgi', 'admin']:    print(f"{filename} {zipfile.is_zipfile(filename)}")

运行结果显示,print_name.py和admin文件不存在或不是ZIP文件,python.zip是真实的ZIP文件。


2. 读取ZIP文件内容

使用namelist()获取ZIP文件中的文件列表。代码如下:

#!/usr/bin/env pythonimport zipfilezf = zipfile.ZipFile('python.zip', 'r')print(zf.namelist())

运行结果显示,python.zip文件包含文件test.txt。要获取更多信息,可以使用infolist()或getinfo()方法。


3. 从ZIP文件中提取文件

读取ZIP文件中的具体文件内容,使用read()方法。代码如下:

#!/usr/bin/env pythonimport zipfilezf = zipfile.ZipFile('python.zip')for filename in ['test.txt', 'notthere.txt']:    try:        data = zf.read(filename)        print(f"{filename}: {repr(data)}")    except KeyError:        print(f"ERROR: Did not find {filename} in zip file")

提取的文件会自动解压。如果文件不存在,会抛出KeyError错误。


4. 创建新的ZIP文件

创建新的ZIP文件时,使用ZipFile对象的write()方法。默认情况下不压缩文件,代码如下:

#!/usr/bin/env pythonfrom zipfile import ZipFilezf = ZipFile('zipfile_write.zip', 'w')try:    zf.write('text.txt')finally:    zf.close()print("File written successfully.")

如果需要压缩文件,需要启用zlib模块,设置压缩模式为ZIP_DEFLATED或ZIP_STORED。代码如下:

#!/usr/bin/env pythonimport zipfileimport zlibtry:    compression = zipfile.ZIP_DEFLATEDexcept:    compression = zipfile.ZIP_STOREDmodes = {    zipfile.ZIP_DEFLATED: 'deflated',    zipfile.ZIP_STORED: 'stored'}zf = zipfile.ZipFile('zipfile_write_compression.zip', 'w')try:    print(f"Adding text.txt with compression mode: {modes[compression]}")    zf.write('text.txt', compress_type=compression)finally:    zf.close()print("File written successfully.")

5. 提取文件时指定文件名

在写入ZIP文件时,可以指定文件名,代码如下:

#!/usr/bin/env pythonfrom zipfile import ZipFilezf = ZipFile('zipfile_write_arcname.zip', 'w')try:    zf.write('text.txt', arcname='NOT_README.txt')finally:    zf.close()print("File written successfully.")

以上内容可以根据实际需求进行修改和扩展,建议结合实际项目需求进行测试和优化。

转载地址:http://vgafk.baihongyu.com/

你可能感兴趣的文章
Python WebDriver如何打印整个页面源(html)
查看>>
Python WebSocket自动化测试:构建高效接口测试框架
查看>>
Python Web开发
查看>>
Redis 配置文件杂项。
查看>>
Python web自动化测试 —— 文件上传
查看>>
Python web自动化测试 —— 文件上传!
查看>>
Python Web自动化测试开发环境搭建(附安装包与虚拟机环境)
查看>>
python win32api键盘_Python win32api.keybd_event模拟键盘输入
查看>>
python Windows显示当前鼠标坐标
查看>>
python Workbook 表格宽度
查看>>
python write报错a byte-like object is required.not str
查看>>
PYTHON调用大模型实现图片生成
查看>>
python yaml.dump 缩进错误
查看>>
Python yield generator
查看>>
Python yield 使用浅析
查看>>
Python yield解析:深入理解生成器的魔力
查看>>
Python You are using pip version 10.0.1, however version 19.3.1 is available.
查看>>
python zipfile模块学习笔记(一)
查看>>
Python zip函数 详解(全)
查看>>
Python \r\n与\n的转换
查看>>