用python不解压的读取bz2文件和gz文件
2015-12-21 16:25
731 查看
当一个文档特别大的时候(比如wikidata等知识库的dump),往往会采用bz2或者gz对其进行压缩,方便下载,同时减少存储空间(bz2压缩率更高一些)。
那么,如何不用解压也能读取原来的文档呢?
因为python官方的bz2模块不能处理multi-stream files,而不少大文件都是用这种方式压缩的。所以,为了避免不必要的麻烦,统一使用bz2file这个第三方模块吧.
用这个模块将bz2文件打开后,可以类似于普通的文本文件一样处理,详细用法见上面链接中的Documentation
样例代码如下:
这里,假设我们将wikidata的dump存储在”./data”文件夹下。
首先,我们用bz2file.open打开bz2文件。这里”r”表示读,”w”表示写。
然后,我们读取这个文件的前三行。
这里我们要读取data文件夹下的test.gz文件
通过GzipFile打开,之后通过readline读入即可
更多使用方法请参考gzip官方文档
那么,如何不用解压也能读取原来的文档呢?
读取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官方文档
相关文章推荐
- 利用Queue库实现python进程间通讯
- [转载]Python装饰器学习(九步入门)
- python学习---5
- python 常用 time, datetime处理
- 基于python实现微信模板消息
- Python字符串连接
- python中迷信继承
- [python]在场景中理解装饰器
- python下分析网页的好工具:BeautifulSoup
- Python内置函数学习
- Python GET REMOTE SERVER'S INFO
- Python读写文件
- python主要用来做什么
- Python 元组、列表、字典、字符串的操作
- python 获取管理微信应用菜单
- python_index
- 每天学点Python之tuple
- 每天学点Python之set
- Python Network Programming -Gethostname&ip_address
- python如何实现远程控制电脑(结合微信)