您的位置:首页 > 编程语言 > Python开发

用python不解压的读取bz2文件和gz文件

2015-12-21 16:25 731 查看
当一个文档特别大的时候(比如wikidata等知识库的dump),往往会采用bz2或者gz对其进行压缩,方便下载,同时减少存储空间(bz2压缩率更高一些)。

那么,如何不用解压也能读取原来的文档呢?

读取bz2文件

请使用bz2file这个第三方模块!一定不要使用python自带的bz2模块!

因为python官方的bz2模块不能处理multi-stream files,而不少大文件都是用这种方式压缩的。所以,为了避免不必要的麻烦,统一使用bz2file这个第三方模块吧.

用这个模块将bz2文件打开后,可以类似于普通的文本文件一样处理,详细用法见上面链接中的Documentation

样例代码如下:

#!/usr/bin/python
# -*- coding: UTF-8 -*-

import bz2file
import os

if __name__ == "__main__":
inpath = os.path.join(".", "data", "wikidata-20151130-all.json.bz2")
infile = bz2file.open(inpath, "r")
for i in xrange(3):
print(infile.readline())


这里,假设我们将wikidata的dump存储在”./data”文件夹下。

首先,我们用bz2file.open打开bz2文件。这里”r”表示读,”w”表示写。

然后,我们读取这个文件的前三行。

读取gz文件

类似于bz2,使用python的gzip这个package即可

#!/usr/bin/python
# -*- coding: UTF-8 -*-

import gzip
import os

if __name__ == "__main__":
inpath = os.path.join(".", "data", "test.gz")
infile = gzip.GzipFile(inpath, "r")
for i in xrange(3):
print(infile.readline())


这里我们要读取data文件夹下的test.gz文件

通过GzipFile打开,之后通过readline读入即可

更多使用方法请参考gzip官方文档
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: