我们日常在 Linux 平台上,一定会接触到大量的压缩文件(zip、gz、tar.gz、tgz、bz2、rar)需要解压,也有大量文件需要压缩。一般情况下,我们会使用 Linux 的命令,比如: tar
。但一些项目需要我们在 Python 中完成压缩解压的操作,比如:日志的处理。本文介绍两个 Python 中的模块:zipfile
、tarfile
和 gzip
。
为了让大家可以更好的理解,zipfile
、tarfile
和 gzip
三个模块,有必要讲解一下文件压缩格式。
tar.gz
格式。这样以后在选择压缩格式时,就可以有针对性了,是打包备份,还是追求高压缩比。
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()
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:gz
和 r:gz
。
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大门。
如果因为以上内容对你有所帮助,希望点个赞、评个论、转个发,关个注,多谢多谢!
此公众号每周分享一篇干货文章,实实在在把一个课题说明白,讲清楚,望关注!