一, zipfile 实现压缩及解压:
1.Python--zipfile 压缩 ZIP 文件:
- import zipfile
- f = zipfile.ZipFile(target, 'w', zipfile.ZIP_DEFLATED)
- f.write(filename, file_url)
- f.close()
其中 target: 是压缩后要保存的路径, 可以是: 'C:\\temp\\' 或'./test'
ZIP_DEFLATED: 表示压缩,
ZIP_STORE: 表示只打包, 不压缩.(这个 Linux 中的 gz 跟 tar 格式有点类似)
write 方法:
如果只有一个参数 filename 的话, 表示把你 filename 所带的路径全部压缩到 zip 文件中.
如果带两个参数, 表示把 filename 路径中的那个 file 压缩一下并且存放到 file_url 中, 中间没有增加任何的文件夹.
如果要压缩很多的文件, 循环的 write 每个文件就 ok 了
最后 close 掉.
2.Python--zipfile 解压 ZIP 文件:
- f = zipfile.ZipFile(tatgert,'r')
- for file in f.namelist(): #f.namelist() 返回列表, 列表中的元素为压缩文件中的每个文件
- f.extract(file,"temp/")
target 是压缩文件的路径
循环访问该压缩文件中的文件, 并且一个一个 file 的解压到对应的 "temp\" 文件夹中
二, gzip 实现压缩及解压:
gzip 块主要支持打开对应格式的压缩文件, 并可以完成对压缩文件的读出和写入操作. 压缩文件被打开后, 可以使用文件对象一样的方法, 如 read,readline,readlines,write,writelines 等.
1.Python--gzip 压缩 ZIP 文件:
- import gzip
- f_src = open("data.txt", "rb") #打开文件
- f_tar= gzip.open("data.txt.gz", "wb")# 创建压缩文件对象
- f_tar.writelines(f_src)
- f_tar.close()
- f_src.close()
- import gzip
- g = gzip.GzipFile(filename="", mode="wb", compresslevel=9, fileobj=open('sitemap.log.gz','wb'))
- g.write(open('d:\\test\\sitemap.xml').read())
- g.close()
其中, filename 参数是压缩文件内文件的名字, 为空也可以, 不修改. fileobj 是生成的压缩文件对象, 它的路径名称等. 最后是把文件写入 gzip 文件中去, 再关闭操作连接.
2.Python--gzip 解压 ZIP 文件:
- import gzip
- f = gzip.open("data.txt.gz", 'rb') #打开压缩文件对象
- f_out=open("data.txt","w") #打开解压后内容保存的文件
- file_content = f.read() #读取解压后文件内容
- f_out.write(file_content.decode("utf-8")) #写入新文件当中
- print(file_content) #打印读取内容
- f.close()
- f_out.close()
- g = gzip.GzipFile(mode="rb", fileobj=open('d:\\test\\sitemap.log.gz', 'rb'))
- open(r"d:\\haha.xml", "wb").write(g.read())
使用的时候注意, 函数 http://www.iplaypython.com/jichu/function.html 方法的大小写一点要看仔细, 如果 gzip 文件是这种形式的:*.tar.gz, 证明先是由 tar 命令压缩后, 后再由 gzip 压缩的, 需要先用解压缩 tar 文件, 再用 gzip 模块解压缩. 其实, 现在很多网页为了提高浏览器端用户的访问速度, 和搜索引擎爬虫抓取的速度, 都在使用 gzip 压缩.
来源: http://www.bubuko.com/infodetail-3101248.html