原文链接:http://www.juzicode.com/python-tutorial-zip-unzip-gzip

本文介绍python的gzip模块压缩和解压缩文档,gzip只能对单个文档进行操作。

1、gzip.open() 创建文件实例压缩文件

gzip.open()方法会创建一个GzipFile文件实例,第1个参数filename为gz文件的名称。参数mode为打开文件的模式,支持’r’, ‘rb’, ‘a’, ‘ab’, ‘w’, ‘wb’, ‘x’ or ‘xb’ (二进制方式)或者 ‘rt’, ‘at’, ‘wt’, or ‘xt’(文本模式),缺省为 ‘rb’,一般使用‘rb’读取,‘wb’创建文件。参数compresslevel压缩等级默认为9。

下面这个例子中先用gzip.open()方法的’wb’模式创一个GzipFile文件实例,然后用rb模式从文件中读取数据,再用该文件实例的write()方法写入从文件中读取的数据,最后关闭文件实例:

#juzicode.com / VX:桔子code
import  gzip
# 创建GzipFile实例
zf = gzip.open('logo.png.gz', mode = 'wb')
print('type(zf):',type(zf))
data = open('logo.png','rb').read()  # 简化描述未关文件
zf.write(data)  # 写文件
zf.close()  # 关闭

运行结果:

type(zf): <class 'gzip.GzipFile'>

从压缩后的结果可以看到,open()方法创建文件对象时,如果filename入参以gz结尾,压缩文件内部的名称就是gz后缀前面的一部分,比如用log.png.gz作为压缩文档的名称,在压缩文档内部的文件名称就为logo.png。

2、gzip.GzipFile创建文件实例压缩文件

和前面的过程类似,不过创建文件实例用的是 gzip.GzipFile():

#juzicode.com / VX:桔子code
import  gzip
# 创建GzipFile实例
zf = gzip.GzipFile('logo2.png.gz', mode = 'wb')
print('type(zf):',type(zf))
data = open('logo.png','rb').read()  # 简化描述未关文件
zf.write(data)  # 写文件
zf.close()  # 关闭

3、gzip.comress()压缩数据后写文件

另外一种方法是用gzip.comress()方法将从文件中读出的数据进行压缩,再将压缩后的数据写入到文件中。

#juzicode.com / VX:桔子code
import  gzip
pf = open('logo3.png.gz', 'wb') # open方法创建普通文件对象
data = open('logo.png','rb').read()  # 简化描述未关文件
data_comp = gzip.compress(data) # 压缩数据
pf.write(data_comp)  # 写文件
pf.close()  # 关闭

运行结果:

从压缩文件看该方法和前2种效果是一样的。

下面这种方法更简便、更安全:

import  gzip
with open('logo31.png.gz', 'wb') as pw, open('logo.png','rb') as pr:pw.write(gzip.compress(pr.read())  )  

4、解压文件

和前述3种生成压缩文件的方法对应,有3种解压gz文件的方式,这时打开文件用mode=’r’:

#juzicode.com / VX:桔子code
import  gzip
zip_filename = 'logo.png.gz'
with open('unzip\\logo1.png','wb') as pw:zf = gzip.open(zip_filename, mode = 'rb') pw.write(zf.read())  # 写文件zf.close()with open('unzip\\logo2.png','wb') as pw:zf = gzip.GzipFile(zip_filename, mode = 'rb') pw.write(zf.read())  # 写文件zf.close()with open(zip_filename, 'rb') as pr, open('unzip\\logo3.png','wb') as pw:pw.write(gzip.decompress(pr.read())  )  

扩展阅读:

  1. Python桔子教程

Python压缩解压–gzip相关推荐

  1. Python压缩解压--lzma

    原文链接:http://www.juzicode.com/python-tutorial-zip-unzip-lzma 本文介绍python的lzma模块压缩和解压缩文档,lzma和gzip一样也只能 ...

  2. Python压缩解压zip,Django下载zip文件

    Python压缩解压zip 压缩 import zipfile def convert_zip(zip_path, save_path):'''# zip_path 要压缩文件的路径# save_pa ...

  3. python 压缩 解压

    unrar在Linux机器中对中文的支持有漏洞 class DecompressionModel:def __init__(self):pass@staticmethoddef decompressi ...

  4. Python加解压文件gzip库操作一文详解

    目录 一.gzip GZIP概念 文件格式 二.Python gzip库 gzip.open gzip.GzipFile压缩和解压 gzip.comress()压缩数据 解压数据 第一种 第二种 第三 ...

  5. python压缩文件tar_python 实现tar文件压缩解压的实例详解

    python 实现tar文件压缩解压的实例详解 python 实现tar文件压缩解压的实例详解 压缩文件: import tarfile import os def tar(fname): t = t ...

  6. python批量解压文件_python 批量解压压缩文件的实例代码

    下面给大家介绍python 批量解压压缩文件的实例代码,代码如下所述: #/usr/bin/python#coding=utf-8import os,sys import zipfile open_p ...

  7. 字符串GZIP压缩解压

    c# /// <summary>/// 字符串压缩解压/// </summary>public class Zipper{public static string Compre ...

  8. linux 如何打包分区文件,Linux基础------文件打包解包---tar命令,文件压缩解压---命令gzip,vim编辑器创建和编辑正文件,磁盘分区/格式化,软/硬链接...

    作业一: 1)将用户信息数据库文件和组信息数据库文件纵向合并为一个文件/1.txt(覆盖) cat /etc/passwd /etc/group > /1.txt 2)将用户信息数据库文件和用户 ...

  9. Ubuntu使用gzip与bzip2与rar和tar压缩解压

    目录 1.gzip压缩解压 2.bzip2压缩解压 3.rar压缩解压 tar归档压缩与解压包 1.gzip压缩解压 因为都是系统自带的我们不需要安装: ls 看一下目录当前的文件,创建一个 touc ...

  10. Linux中使用gzip来压缩/解压 *.gz文件

    gzip 是linux中常见的压缩/解压工具,最常见的使用对象是*.gz格式的文件,这里简单介绍下它最常见的用法, GZIP(1) General Commands Manual GZIP(1) NA ...

最新文章

  1. 选错导师误终身?Nature大调查显示 :全球1/4博士生想换导师
  2. webservice 简介 跨编程语言 跨操作系统 远程调用技术
  3. for循环与内置方法详解
  4. etherpeek nx在网络维护中的应用
  5. 在Windows 下使用CodeBlocks 自带编译器实现对编译的优化
  6. Redis—字符串和SDS
  7. 【clickhouse】clickhouse 如何实现tcp方式发送数据
  8. 找出符合下图的互联网产品实例
  9. mysql 8.0以上 新版本账号密码策略修改和密码修改
  10. opengl 如何加阴影_一步步学OpenGL(23) -《阴影贴图1》
  11. Elasticsearch-拼音分词/排序
  12. Openwrt无线中继AP设置教程
  13. MATLAB神经网络汉字数字字母识别(任何字符,GUI)
  14. 菏泽一中2021级高考成绩查询入口,2021年菏泽中考各学校录取分数线,历年菏泽中考分数线汇总...
  15. python 字符串替换_Python中的字符串替换操作示例
  16. Revit中如何连接消火栓-Revit中快速连接设备
  17. 我们是如何管理蓝精灵协会 PFP 集合的程序性生成的?
  18. 《Nginx入门这一篇就够了》
  19. Golang获取整点的时间戳
  20. 《A Deep Generative Framework for Paraphrase Generation》论文笔记--摘要、引言

热门文章

  1. 深入理解SSIM(两图像结构相似度指标)(附matlab代码)
  2. 关于“UDP转发被禁用”的解决办法
  3. 软件工程课程课后大作业
  4. 只需3步完成,git迁移仓库地址,保留分支和历史记录
  5. 如何成为技术大牛 ?
  6. 项目管理软件: 禅道、JIRA
  7. 基于JAVA的旅游企业财务管理系统源码【包调试】
  8. GPT格式的动态磁盘文件无损地转换为基本磁盘
  9. 用matlab编写指派问题,[原创] Matlab 指派问题模型代码
  10. 蓝丝雨零基础DNF脚本开发速成系列