高技巧,Python 可以读写压缩文件吗

简介: 高技巧,Python 可以读写压缩文件吗

读写压缩文件


问题核心:★★    口感:苦瓜


问题


你想读写一个 gzip 或 bz2 格式的压缩文件


解决方案


gzip 和 bz2 模块可以很容易的处理这些文件。两个模块都为 open() 函数提供了 另外的实现来解决这个问题。比如,为了以文本形式读取压缩文件,可以这样做:


# gzip import gzipwith gzip.open('somefile.gz', 'rt') as f:  text = f.read()# bz2 import bz2with bz2.open('somefile.bz2', 'rt') as f:  text = f.read()


类似的,为了写入压缩数据,可以这样做:


# gzip import gzipwith gzip.open('somefile.gz', 'wt') as f:  f.write(text)# bz2 import bz2with bz2.open('somefile.bz2', 'wt') as f:  f.write(text)

如上,所有的 I/O 操作都使用文本模式并执行 Unicode 的编码/解码。类似的,如 果你想操作二进制数据,使用 rb 或者 wb 文件模式即可。


结论 


大部分情况下读写压缩数据都是很简单的。但是要注意的是选择一个正确的文件 模式是非常重要的。如果你不指定模式,那么默认的就是二进制模式,如果这时候程 序想要接受的是文本数据,那么就会出错。gzip.open()bz2.open() 接受跟内置的open() 函数一样的参数,包括 encoding,errors,newline 等等。

当写入压缩数据时,可以使用 compresslevel 这个可选的关键字参数来指定一压缩级别。比如:


with gzip.open('somefile.gz', 'wt', compresslevel=5) as f:  f.write(text)

默认的等级是 9,也是最高的压缩等级。等级越低性能越好,但是数据压缩程度也 越低。最后一点,gzip.open() 和 bz2.open() 还有一个很少被知道的特性,它们可以作 用在一个已存在并以二进制模式打开的文件上。比如,下面代码是可行的:


import gzipf = open('somefile.gz', 'rb')with gzip.open(f, 'rt') as g:  text = g.read()

这样就允许 gzip 和 bz2 模块可以工作在许多类文件对象上,比如套接字,管道和 内存中文件等。


-END-

﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌


往期好文合集

学到了,学到了导入模块还能这么操作<<戳这里

Python 读取 JSON 数据的骚操作<<戳这里多样式的字典,重口感<<戳这里


最 后   

若觉得文章不错,转发分享,也是我们继续更新的动力。Ps 将不在提供疫情查询服务在公众号内回复「资料」,即可获取 Python资料,期待你的关注~

相关文章
|
17天前
|
安全 项目管理 Python
使用Python shutil库进行文件和目录操作
使用Python shutil库进行文件和目录操作
使用Python shutil库进行文件和目录操作
|
6天前
|
Java 数据安全/隐私保护 Python
Python案例分享:如何实现文件的解压缩
Python案例分享:如何实现文件的解压缩
31 8
|
6天前
|
存储 缓存 安全
Python案例分享:如何实现文件的上传下载
Python案例分享:如何实现文件的上传下载
31 6
|
21天前
|
数据挖掘 数据处理 数据格式
Python读取.nc文件的方法与技术详解
通过上述方法,用户可以根据需求选择合适的库来读取.nc文件,并根据实际情况进行必要的数据操作,这是科学数据处理和分析中的一个重要技能。
47 10
|
17天前
|
Python
像导入Python模块一样导入ipynb文件
像导入Python模块一样导入ipynb文件
|
18天前
|
Ubuntu Linux 数据安全/隐私保护
使用Cython库包对python的py文件(源码)进行加密,把python的.py文件生成.so文件并调用
本文介绍了在Linux系统(Ubuntu 18.04)下将Python源代码(`.py文件`)加密为`.so文件`的方法。首先安装必要的工具如`python3-dev`、`gcc`和`Cython`。然后通过`setup.py`脚本使用Cython将`.py文件`转化为`.so文件`,从而实现源代码的加密保护。文中详细描述了从编写源代码到生成及调用`.so文件`的具体步骤。此方法相较于转化为`.pyc文件`提供了更高的安全性。
30 2
|
18天前
|
存储 编解码 API
python多种方法压缩图片,opencv、PIL、tinypng、pngquant压缩图片
python多种方法压缩图片,opencv、PIL、tinypng、pngquant压缩图片
16 1
|
18天前
|
移动开发 Java 编译器
什么是pyc文件,把python的py文件编译成pyc文件,把pyc文件反编译成py文件。以及python编译的如何设置不生成pyc文件
什么是pyc文件,把python的py文件编译成pyc文件,把pyc文件反编译成py文件。以及python编译的如何设置不生成pyc文件
21 1
|
19天前
|
SQL JSON 关系型数据库
n种方式教你用python读写excel等数据文件
n种方式教你用python读写excel等数据文件
|
17天前
|
TensorFlow 算法框架/工具 C++
Python exe文件打包神器-Nuitka!
Python exe文件打包神器-Nuitka!