在日常工作中,除了会涉及到使用Python处理文本文件,有时候还会涉及对压缩文件的处理。
通常会涉及到的压缩文件格式有:
-
rar:Windows 环境下用的比较多的压缩,比较著名的GUI工具是winrar
-
tar: Linux系统下的打包工具,只打包,不压缩
-
gz:即gzip,通常只能压缩一个文件。与tar结合起来就可以实现先打包,再压缩。
-
tgz:即gz。先用tar打包,然后再用gz压缩得到的文件
-
zip:不同于gzip,虽然使用相似的算法,可以打包压缩多个文件,不过分别压缩文件,压缩率低于tar
-
7z:7zip压缩软件支持的格式,压缩效率较高。
当然除了使用Python外,你还可以选择使用压缩解压缩软件或命令手动进行处理。
zip文件
zipfile是Python里用来做zip格式编码的压缩和解压缩的module,zipfile里有两个非常重要的class:ZipFile和ZipInfo。ZipFile是主要的类,用来创建和读取zip文件,而ZipInfo是存储的zip文件的每个文件的信息。
示例代码:
import os
import zipfile
# 压缩
def make_zip(source_dir, output_filename):
zipf = zipfile.ZipFile(output_filename, 'w')
pre_len = len(os.path.dirname(source_dir))
for parent, dirnames, filenames in os.walk(source_dir):
for filename in filenames:
print(filename)
pathfile = os.path.join(parent, filename)
arcname = pathfile[pre_len:].strip(os.path.sep) # 相对路径
zipf.write(pathfile, arcname)
print()
zipf.close()
# 解压缩
def un_zip(file_name):
"""u