Python读写压缩⽂件的⽅法
问题
你想读写⼀个gzip或bz2格式的压缩⽂件。
python怎么读文件解决⽅案
gzip和 bz2 模块可以很容易的处理这些⽂件。两个模块都为open() 函数提供了另外的实现来解决这个问题。⽐如,为了以⽂本形式读取压缩⽂件,可以这样做:
# gzip compression
import gzip
with gzip.open('', 'rt') as f:
text = f.read()
# bz2 compression
import bz2
with bz2.open('somefile.bz2', 'rt') as f:
text = f.read()
类似的,为了写⼊压缩数据,可以这样做:
# gzip compression
import gzip
with gzip.open('', 'wt') as f:
f.write(text)
# bz2 compression
import bz2
with 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('', 'wt', compresslevel=5) as f:
f.write(text)
默认的等级是9,也是最⾼的压缩等级。等级越低性能越好,但是数据压缩程度也越低。
最后⼀点,gzip.open() 和bz2.open() 还有⼀个很少被知道的特性,它们可以作⽤在⼀个已存在并以⼆进制模式打开的⽂件上。⽐如,下⾯代码是可⾏的:
import gzip
f = open('', 'rb')
with gzip.open(f, 'rt') as g:
text = g.read()
这样就允许gzip 和bz2模块可以⼯作在许多类⽂件对象上,⽐如套接字,管道和内存中⽂件等。
以上就是Python读写压缩⽂件的⽅法的详细内容,更多关于Python 读写压缩⽂件的资料请关注其它相关⽂章!
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论