bz2模块是为了读写bz2文件使用,以下例子创建了一个bz2文件
#!/usr/bin/env python
#--*--coding:utf8--*--
from bz2 import *
#产生一个.bz2的数据包
compressor = BZ2Compressor()
compressor.compress('test test test\n')
compressor.compress('done done done.')
file = open('test.bz2', 'w')
file.write(compressor.flush())
file.close()
#读取.bz2文件
de = BZ2Decompressor()
file = open('test.bz2', 'r')
print de.decompress(file.read())
#作为一个文件对象,读取.bz2压缩文件. 感觉解压缩的话,还是这个好一点.
file = BZ2File('test.bz2', 'r')
i=1
for line in file.readlines():
print i, line,
i += 1
gzip 模块也是提供压缩和解压缩的,代码如下:
#!/usr/bin/env python
#--*- coding:utf8 --*--
import gzip
gz = gzip.open('test.gz', 'wb')
gz.write('another line\n')
gz.close()
gz = gzip.open('test.gz')
print gz.read()
gz.close()
注意:不允许对一个压缩文件同时进行读和写,那么另一个问题是如何对压缩的文件内容进行更新,修改?
import gzip
gz = gzip.GzipFile('gzip_test.py.bak.gz', 'a')
gz.write('another line\n')
gz.close()
注意对'a'的理解,它表示在文件末尾写,不需要和'w'一起使用
fnmatch模块允许使用shell型的通配符对文件名进行匹配, 有* ? [] [!seq]
#! /usr/bin/env python
# -*- coding:utf8 -*-
import os
import fnmatch
def findall(topdir, pattern):
for dirpath, dirnames, files in os.walk(topdir): #这里的os.walk的三个返回值与其它版本的不一样.
for name in files:
print name
if fnmatch.fnmatch(name, pattern):
yield os.path.join(dirpath, name) #关于yield的理解可看下面的两个链接,貌似这里好似将想要输出的结果放到了一个容器中,作为它的返回值
for pyfile in findall('.', '*.py'):
print pyfile
https://www.ibm.com/developerworks/cn/opensource/os-cn-python-yield/
阅读(881) | 评论(0) | 转发(0) |