Python压缩解压文件:zipfile、tarfile、gzip,压缩格式:zip、gz、tar.gz、tgz、bz2

我们日常在 Linux 平台上,一定会接触到大量的压缩文件(zip、gz、tar.gz、tgz、bz2、rar)需要解压,也有大量文件需要压缩。一般情况下,我们会使用 Linux 的命令,比如: tar 。但一些项目需要我们在 Python 中完成压缩解压的操作,比如:日志的处理。本文介绍两个 Python 中的模块:zipfiletarfilegzip

为了让大家可以更好的理解,zipfiletarfilegzip三个模块,有必要讲解一下文件压缩格式。

  • zip,是公开的一种压缩算法,但压缩比不高。
  • rar,是商业算法,带专利的,不用随便使用,但压缩比很高。
  • tar,本身不是压缩算法,只是打包工具,但可以在打包后调用压缩算法进行压缩,这就是我们常常见到的 tar.gz 格式。
  • gz,是 GNU 组织开发的一个压缩程序,是开源的。
  • bz2,是 Linux 下常见的压缩文件格式,具有很高的压缩比。

这样以后在选择压缩格式时,就可以有针对性了,是打包备份,还是追求高压缩比。

zipfile

import zipfile

# 压缩文件
z = zipfile.ZipFile('demo.zip', 'w')
z.write('file_1.txt')
z.write('file_2.txt')
z.close()

# 解压文件
z = zipfile.ZipFile('demo.zip', 'r')
# 可以指定解压路径
z.extractall()
z.close()

tarfile

import tarfile

# 打包(压缩)文件
t = tarfile.open('demo.tar', 'w')
# arcname是可以重命名
t.add('./dir_1/file_1.zip', arcname='file_1.zip')
t.add('./dir_1/file_2.zip', arcname='file_2.zip')
t.close()

# 解压文件
t = tarfile.open('demo.tar', 'r')
# 可以指定解压路径
t.extractall()
t.close()

而要压缩成 tar.gz ,则需要对文件打开方式进行调整。

# 压缩
t = tarfile.open('demo.tar.gz', 'w:gz')
t.add('./dir_1/file_1.txt', arcname='file_1.txt')
t.close()

# 解压
t = tarfile.open('demo.tar.gz', 'r:gz')
t.extractall()
t.close()

与之前的方式基本一致,只是注意一下文件打开方式:w:gzr:gz

gzip

import gzip

# 压缩文件内容
g = gzip.GzipFile('demo.gz', 'wb')
g.write('hello world')
g.close()

# 解压
g = gzip.GzipFile('demo.gz', 'rb')
print(g.read())

通过上面的代码可以发现,gzip 是对内容进行压缩的。

安利大家一本掘金小册《深入理解NLP的中文分词:从原理到实践》,让你从零掌握中文分词技术,踏入NLP大门。

如果因为以上内容对你有所帮助,希望点个赞、评个论、转个发,关个注,多谢多谢!

此公众号每周分享一篇干货文章,实实在在把一个课题说明白,讲清楚,望关注!
惠惠周刊

你可能感兴趣的:(Python压缩解压文件:zipfile、tarfile、gzip,压缩格式:zip、gz、tar.gz、tgz、bz2)