压缩包类型:.gz .tar .tgz .zip .rar
gz: 即gzip。通常仅仅能压缩一个文件。与tar结合起来就能够实现先打包,再压缩。
tar: linux系统下的打包工具。仅仅打包。不压缩
tgz:即tar.gz。先用tar打包,然后再用gz压缩得到的文件
zip: 不同于gzip。尽管使用相似的算法,能够打包压缩多个文件。只是分别压缩文件。
rar:打包压缩文件。最初用于DOS,基于window操作系统。
gz
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import gzip
def un_gz(file_name):
# 获取文件的名称,去掉后缀名
f_name = file_name.replace(".gz", "")
# 开始解压
g_file = gzip.GzipFile(file_name)
#读取解压后的文件,并写入去掉后缀名的同名文件(即得到解压后的文件)
open(f_name, "wb+").write(g_file.read())
g_file.close()
tar
import tarfile
tar = tarfile.open( '*.tar.gz', mode = "r:gz") #"r:gz"表示 open for reading with gzip compression
tar.extractall(path='temp') ### 将tar.gz文件解压到temp文件夹下
tar.close()
tgz
import tarfile
tarobj = tarfile.open("my_backup_file.tgz", "r:gz")
for tarinfo in tarobj:
tarobj.extract(tarinfo.name, r"d:/temp/backup")
tarobj.close()
zip
import zipfile
'''
基本格式:zipfile.ZipFile(filename[,mode[,compression[,allowZip64]]])
mode:可选 r,w,a 代表不同的打开文件的方式;r 只读;w 重写;a 添加
compression:指出这个 zipfile 用什么压缩方法,默认是 ZIP_STORED,另一种选择是 ZIP_DEFLATED;
allowZip64:bool型变量,当设置为True时可以创建大于 2G 的 zip 文件,默认值 True;
'''
zip_file = zipfile.ZipFile(path)
zip_list = zip_file.namelist() # 得到压缩包里所有文件
for f in zip_list:
zip_file.extract(f, folder_abs) # 循环解压文件到指定目录
zip_file.close() # 关闭文件,必须有,释放内存
rar
import rarfile
import os
rar=rarfile.RarFile(filename, mode='r') # mode的值只能为'r'
# 判断同名文件夹是否存在,若不存在则创建同名文件夹
if os.path.isdir(os.path.splitext(filename)[0]):
rf_list = rf.namelist() # 得到压缩包里所有的文件
print('rar文件内容', rf_list)
else:
os.mkdir(os.path.splitext(filename)[0])
rar.extractall(os.path.splitext(filename)[0]) # 解压文件
rar.close() # 关闭文件,必须有,释放内存
windows下rar解压操作:
下载UnRAR动态库
windows下可以下载编译好的库包:
下载解压后能得到一个DLL: UnRAR.dll
安装python包unrar
pip install unrar
windows下先进入python安装目录下的Scripts: 例如“D:\Python27\Scripts”
然后同样执行: pip install unrar
参考资料: