Python实战:python操作GZ文件,实现文件压缩与解压缩

目录

压缩文件生成GZ文件

通过程序实现GZ文件压缩

GZ文件解压缩

总结


 Python提供了gzip、zipfile、tarfile等模块用于文件的压缩和解压缩操作。本文将介绍如何使用gzip模块实现GZ文件的压缩和解压缩操作。

压缩文件生成GZ文件

下载gzip.exe打包工具

将gzip.exe与要打包的文件置于同一目录下,打开cmd命令行

输入命令

F:\>gzip 4b29d5f6efa8eb1ae98277be1fb30b90_1458119725.0.xml

https://i-blog.csdnimg.cn/blog_migrate/1f95ef6a046214e8cfba601038997d53.png

也可将工具gzip.exe置于系统盘下的Windows目录下

https://i-blog.csdnimg.cn/blog_migrate/4012cac2aee4d38924ace99a21e7a1e4.png

打开命令行  将目录切换到要打包的文件所在目录下

还是输入以下命令即可将指定文件进行压缩

F:\>gzip 4b29d5f6efa8eb1ae98277be1fb30b90_1458119725.0.xml

在代码中实现:

sc_cmd = "%s %s"%(gzip_file,target_file)
gz_pipe = os.popen(sc_cmd)
gz_pipe.close()

通过程序实现GZ文件压缩

使用gzip模块的GzipFile类可以实现GZ文件的压缩操作。GzipFile类的构造函数需要传入两个参数,第一个参数是压缩后的文件名,第二个参数是打开模式('wb'表示以二进制写入模式打开文件)。

下面是一个简单的例子,将一个300多MB的文件压缩成GZ文件:

import gzip

source_file = "D:\steverocket\CentOS7.zip"
target_file = "D:\steverocket\CentOS7.gz"

with open(source_file, 'rb') as f_in:
    with gzip.open(target_file, 'wb') as f_out:
        f_out.write(f_in.read())

上面的代码中,首先使用open()函数打开一个文本文件source_file,以二进制读取模式打开。然后使用gzip.open()函数创建一个GzipFile对象,以二进制写入模式打开,压缩后的文件名为target_file。最后,使用f_out.write()方法将读取到的数据写入压缩文件中。程序执行完后打开文件,文件未压缩坏。

GZ文件解压缩

使用gzip模块的GzipFile类也可以实现GZ文件的解压缩操作。GzipFile类的构造函数需要传入两个参数,第一个参数是要解压的文件名,第二个参数是打开模式('rb'表示以二进制读取模式打开文件)。

下面是一个简单的例子,将一个GZ文件解压缩:

import gzip

TARGET_FILE = "D:\steverocket\CentOS7.gz"
TARGET_FILE_BACK = "D:\steverocket\CentOS7_back.zip"

def decompression_gzfile():
    with gzip.open(TARGET_FILE, 'rb') as f_in:
        with open(TARGET_FILE_BACK, 'wb') as f_out:
            f_out.write(f_in.read())

上面的代码中,首先使用gzip.open()函数打开一个GZ文件TARGET_FILE,以二进制读取模式打开。然后使用open()函数创建一个文本文件TARGET_FILE_BACK,以二进制写入模式打开。最后,使用f_out.write()方法将读取到的数据写入文本文件中。程序执行完后打开文件,文件未压缩坏。

总结

本文介绍了如何使用gzip模块实现GZ文件的压缩和解压缩操作。在压缩时,使用GzipFile类创建一个压缩文件,并使用write()方法将数据写入压缩文件中;在解压缩时,使用GzipFile类打开一个压缩文件,并使用read()方法读取数据,然后将数据写入解压缩后的文件中。

SteveRocket的博客_CSDN博客-Django进阶,Python进阶,网络&信息安全领域博主SteveRocket擅长Django进阶,Python进阶,网络&信息安全,等方面的知识https://blog.csdn.net/zhouruifu2015/


更多资料 · 微信公众号搜索【CTO Plus】关注后,获取更多,我们一起学习交流。

关于公众号的描述访问如下链接



关于Articulate“做一个知识和技术的搬运工。做一个终身学习的爱好者。做一个有深度和广度的技术圈。”一直以来都想把专业领域的技https://mp.weixin.qq.com/s/0yqGBPbOI6QxHqK17WxU8Q

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SteveRocket

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值