博客
关于我
python zipfile模块学习笔记(一)
阅读量:798 次
发布时间: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 tarfile、zipfile解压模块讲解
查看>>
python tcp server传输成功之后进行删除_python学习之路(三)使用socketserver进行ftp断点续传...
查看>>
python车牌识别系统+车辆管理+计费系统(图像识别)django框架 计算机毕业设计
查看>>
Python threading.Thread 只能使用私有方法 self.__Thread_stop() 停止
查看>>
python time模块
查看>>
Python Tkinter Multiple Windows 教程
查看>>
Python tkinter 中的多处理
查看>>
python tkinter 按钮颜色_Python3 tkinter基础 Button bg 按钮的背景颜色
查看>>
Python Tkinter 笔记本小部件
查看>>
Python Tkinter 网格复选框
查看>>
Python TLS版本匹配
查看>>
python车牌精确定位
查看>>
python try except finally_Python3基础 try-except-finally 的简单示例
查看>>
Python Turtle图形窗口不显示任何内容
查看>>
Python tweepy写入到sqlite3 db
查看>>
Python TypeError:格式字符串的参数不足
查看>>
Python UI自动化测试Page Objects企业级实战
查看>>
Python趣味编程:用代码创造无限可能
查看>>
Python UI自动化测试三方库扩展详解
查看>>
Python UI自动化测试与Web UI自动化测试框架详解
查看>>