python中gzip模块的使用
gzip模块能够直接压缩和解压缩bytes-like类型的数据,同时也能实现对应格式文件的压缩与解压缩
一、数据压缩与解压缩
压缩
函数-gzip.compress(data, compresslevel=_COMPRESS_LEVEL_BEST, mtime=None)
- 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", compresslevel=_COMPRESS_LEVEL_BEST, encoding=None, errors=None, newline=None)
- 压缩文件打开后,拥有普通文件对象一样的方法,如read、readline、readlines、write、writelines等。
- 读取内容,可以获得解压缩后的数据
- 写入内容,能够完成对数据的压缩
使用类-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()
python中gzip模块的使用的更多相关文章
- Python中optionParser模块的使用方法[转]
本文以实例形式较为详尽的讲述了Python中optionParser模块的使用方法,对于深入学习Python有很好的借鉴价值.分享给大家供大家参考之用.具体分析如下: 一般来说,Python中有两个内 ...
- python中threading模块详解(一)
python中threading模块详解(一) 来源 http://blog.chinaunix.net/uid-27571599-id-3484048.html threading提供了一个比thr ...
- 【转】关于python中re模块split方法的使用
注:最近在研究文本处理,需要用到正则切割文本,所以收索到了这篇文章,很有用,谢谢原作者. 原址:http://blog.sciencenet.cn/blog-314114-775285.html 关于 ...
- Python中的模块介绍和使用
在Python中有一个概念叫做模块(module),这个和C语言中的头文件以及Java中的包很类似,比如在Python中要调用sqrt函数,必须用import关键字引入math这个模块,下面就来了解一 ...
- python中导入模块的本质, 无法导入手写模块的解决办法
最近身边一些朋友发生在项目当中编写自己模块,导入的时候无法导入的问题. 下面我来分享一下关于python中导入模块的一些基本知识. 1 导入模块时寻找路径 在每一个运行的python程序当中,都维护了 ...
- Python中time模块详解
Python中time模块详解 在平常的代码中,我们常常需要与时间打交道.在Python中,与时间处理有关的模块就包括:time,datetime以及calendar.这篇文章,主要讲解time模块. ...
- Python中collections模块
目录 Python中collections模块 Counter defaultdict OrderedDict namedtuple deque ChainMap Python中collections ...
- Python中pathlib模块
Python中pathlib模块 Path.cwd():返回当前目录的路径 Path.home():返回当前用户的家目录 Path.stat():返回此路径信息 Path.touch():创建文件 P ...
- Python 中包/模块的 `import` 操作
版权声明:博客为作者原创,允许转载,但必须注明原文地址: https://www.cnblogs.com/byronxie/p/10745292.html 用实例来说明 import 的作用吧. 创建 ...
随机推荐
- webIM & IM
webIM & IM sdk 埋点 U-App AI https://developer.umeng.com/docs/67953/detail/68131 https://account.u ...
- taro 滚动事件
taro 滚动事件 taro scroll bug ScrollView https://nervjs.github.io/taro/docs/components/viewContainer/scr ...
- Flutter Android Toast Message(flutter访问Android Toast Message)
原文 Android Toast通知可用于向用户发送快速消息,并在几秒钟后消失. 但是当涉及Flutter时,没有直接的方式来显示这些Toast消息.因此,我们需要找到一种替代方法来实现它.在这种情况 ...
- 算法型稳定币USDN有什么价值和用途?
USDN的标签是"数字美元",与大多数稳定资产一样,USDN是一种金融服务产品.基于NGK公链发行的算法型稳定币USDN,USDN是和美元1:1锚定的加密数字货币,1USDN等于1 ...
- TCP编程详解
目录 数据包格式 建立连接(三次握手) 数据传输 断开连接(四次挥手) 基础 客户端流程 编码 TCP服务端流程 TCP服务端编码 参考文献 TCP把连接作为最基本的对象,每一条TCP连接都有两个端点 ...
- [转]ROS 传感器消息及RVIZ可视化Laserscan和PointCloud
https://blog.csdn.net/yangziluomu/article/details/79576508 https://answers.ros.org/question/60239/ho ...
- 【Azure 云服务】如何从Azure Cloud Service中获取项目的部署文件
问题描述 在历史已经部署的云服务(Azure Cloud Service)中,如何获取到项目在很久以前的部署包文件呢? 解决办法 1)如果部署云服务是通过门户上传部署包到存储账号中,则可以直接从存储账 ...
- teamviewer远程是账号密码都没错但是报正在初始化参数...
1.出现这个原因,可能是 通过(mstsc)远程桌面方式运行了teamviewer,被远程控制电脑就会出现这个现象. 可以试一下 服务-teamviewer-属性-登录-本地系统账户 -允许服务与桌面 ...
- FTPClient类的API
org.apache.commons.NET.ftp Class FTPClient类FTPClient java.lang.Object java.lang.Object继承 org.apache. ...
- RocketMQ基础概念剖析,并分析一下Producer的底层源码
由于篇幅原因,本次的源码分析只限于Producer侧的发送消息的核心逻辑,我会通过流程图.代码注释.文字讲解的方式来对源码进行解释,后续应该会专门开几篇文章来做源码分析. 这篇博客聊聊关于Rocket ...