python中gzip模块的使用
gzip模块能够直接压缩和解压缩bytes-like类型的数据,同时也能实现对应格式文件的压缩与解压缩
一、数据压缩与解压缩
-
压缩
-
gzip.compress(data)
- data:需要压缩的bytes-like类型数据
- compresslevel参数:可选,用数字0-9表示压缩级别,默认最高压缩级别9,0表示不压缩
-
-
解压缩
-
gzip.decompress(data)
-
-
示例:
import gzip test_data = b'gzip test data' gzip_data = gzip.compress(test_data) # 压缩数据 ungz_data = gzip.decompress(gzip_data) #解压缩数据 print(gzip_data) #输出b'\x1f\x8b\x08\x00\xddOa`\x02\xffK\xaf\xca,P(I-.QHI,I\x04\x00*\xfb\x85\x89\x0e\x00\x00\x00' print(ungz_data) #输出b'gzip test data',和test_data一致
二、文件压缩与解压缩
-
gzip.open( filename, mode="rb")
- 压缩文件打开后,拥有普通文件对象一样的方法,如read、readline、readlines、write、writelines等。
- compresslevel参数:可选
- 读取内容,可以获得解压缩后的数据
- 写入内容,能够完成对数据的压缩
-
gzip.GzipFile()
- 初始化对象的方法__init__:(self, filename=None, mode=None,compresslevel=_COMPRESS_LEVEL_BEST, fileobj=None, mtime=None)
- 用法与gzip.open()类似,可传入文件名或文件对象
-
示例:
#coding=utf-8 import gzip def gz(filename): '''压缩文件''' gz_filename = filename + '.tgz' #压缩后文件名 f_ungz = open(filename,'rb') # 打开未压缩文件对象 f_gz = gzip.open(gz_filename,'wb') # 使用open函数创建压缩文件对象 # f_gz = gzip.GzipFile(gz_filename,'wb') 使用GzipFile类创建压缩文件对象 f_gz.writelines(f_ungz) #写入压缩内容 f_ungz.close() f_gz.close() def ungz(gz_filename): '''解压缩文件''' ungz_filename = gz_filename.replace('.tgz','').replace('.tar.gz','')# 解压缩后文件名 f_gz = gzip.GzipFile(gz_filename)#使用GzipFile类创建压缩文件对象 # f_gz = gzip.open(gz_filename) 使用open函数打开压缩文件对象 f_ungz = open(ungz_filename,'wb') #新建未压缩文件对象 f_ungz.writelines(f_gz) #写入解压缩后的文件内容 f_ungz.close() f_gz.close()
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
· C++代码改造为UTF-8编码问题的总结
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 实操Deepseek接入个人知识库
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· 【.NET】调用本地 Deepseek 模型
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库