7z解压使用的py7zlib,因为是python2。
zip解压使用zipfile

 import py7zlibfrom subprocess import callimport gzipimport osdef unzip_all_data(self, path):unzip_success = True# 遍历当前文件夹所有文件,解压所有压缩包for f in os.listdir(path):filePath = path + "/" + f# 如果是文件夹,跳过if os.path.isdir(filePath):continueif ".tar.gz" in f[-7:] or ".tgz" in f[-4:]:ret = call(["tar", "-xvzf", filePath, "-C", path])if (ret == 0):# 解压完成删除原压缩包call(["rm", filePath])else:return Falseelif ".zip" in f[-4:]:(ret, msg) = self.unzip(filePath, path)if (ret == 0):# 解压完成删除原压缩包call(["rm", filePath])else:return Falseelif ".gz" in f[-3:]:(ret, msg) = self.ungz(path, f)if ret:# 解压完成删除原压缩包call(["rm", filePath])else:return Falseelif ".7z" in f[-3:]:print('55555', f)(ret, msg) = self.un7z(path, filePath)if ret:# 解压完成删除原压缩包call(["rm", filePath])else:return False# 再次查看本文件夹是否存在压缩包,防止多层压缩包if self.has_zip_file(path):unzip_success = self.unzip_all_data(path)if not unzip_success:return unzip_success# 遍历所有文件夹,递归每个文件夹for f in os.listdir(path):dirPath = path + "/" + fif os.path.isdir(dirPath):# __MACOSX文件夹是mac压缩文件时产生的缓存文件,无需处理if f == "__MACOSX":continueunzip_success = self.unzip_all_data(dirPath)if not unzip_success:return unzip_successreturn unzip_successdef has_zip_file(self, path):for f in os.listdir(path):if ".tar.gz" in f[-7:] or ".tgz" in f[-4:] or ".zip" in f[-4:] or ".gz" in f[-3:] or ".7z" in f[-3:]:return Truereturn Falsedef un7z(self, path, filePath):try:fp = open(filePath,'rb')#生成一个archive对象archive = py7zlib.Archive7z(fp)#读取文件中所有的文件名names = archive.getnames()#根据文件名返回文件的archiveFile类for name in names:member = archive.getmember(name)#读取文件的所有数据data = member.read()open(path + "/" + name, "w+").write(data)if fp:fp.close()return (True, "")except Exception as e:print("un7z", str(e))return (False, str(e))def ungz(self, path, f):try:# 获取文件的名称f_name = f.replace(".gz", "")#创建gzip对象g_file = gzip.GzipFile(path + "/" + f)#gzip对象用read()打开后,写入open()建立的文件里。open(path + '/' + f_name, "w+").write(g_file.read())g_file.close()return (True, "")except Exception as e:print("ungz", str(e))return (False, str(e))def unzip(self, source, dest):try:from zipfile import ZipFilezipSource = ZipFile(source, 'r')zipSource.extractall(dest)zipSource.close()return (0, "")except Exception as e:print("unzip", str(e))return (1, str(e))

python解压多层压缩包,兼容tar.gz .tgz .zip .7z .gz相关推荐

  1. Python解压所有压缩包到同一文件夹下

    Python解压同一个目录下的所有压缩包 初衷 在学习黑马程序员课程的时候,由于压缩包很多,需要一个一个解压特别麻烦,所以写了一个脚本来一次性解压所有的压缩包. import zipfile impo ...

  2. python压缩包怎么安装-详解python解压压缩包的五种方法

    这里讨论使用Python解压例如以下五种压缩文件: .gz .tar .tgz .zip .rar 简单介绍 gz: 即gzip.通常仅仅能压缩一个文件.与tar结合起来就能够实现先打包,再压缩. t ...

  3. python解压rar_Python解压 rar、zip、tar文件的方法

    Q1 :如何解压 rar 压缩包文件? A : Step1:检查是否有 rarfile 第三方库,若没有该模块,则需要进行安装 : Step2:参考代码如下: import rarfile impor ...

  4. python解压gz_python解压gz

    广告关闭 云服务器1核2G首年99年,还有多款热门云产品满足您的上云需求 执行程序,会在当前目录下生成aa.tar.gz文件二.解压defuntar(fname,dirs):解压tar.gz文件:pa ...

  5. python解压zip文件_python-29 python解压压缩包的几种方法

    这里讨论使用Python解压例如以下五种压缩文件: .gz .tar .tgz .zip .rar 简单介绍 gz: 即gzip.通常仅仅能压缩一个文件.与tar结合起来就能够实现先打包,再压缩. t ...

  6. python解压压缩包的几种方法

    这里讨论使用Python解压例如以下五种压缩文件: .gz .tar  .tgz .zip .rar 简单介绍 gz: 即gzip.通常仅仅能压缩一个文件.与tar结合起来就能够实现先打包,再压缩. ...

  7. Linux:压缩与解压命令大全(tar、gz、bz2、Z、zip、rar、lha、rpm、deb)

    tar tar xvf FileName.tar # 解包 tar cvf FileName.tar DirName # 仅打包,无压缩功能 .gz gunzip FileName.gz # 解压1 ...

  8. tar 批量解压多层目录文件

    需求 tgz 文件存放在多层目录中 想解压到另一个位置,不影响当前文件夹 例子 类似这种目录结构./compressed_data/2011/01/01/file1.tgz ./compressed_ ...

  9. gz文件解压 linux,linux下.tar.gz和.gz文件解压详解

    .tar.gz和.gz文件是两种不同的文件,需要区别对待,解压命令当然也不同咯,下面来分享一下他们各自的解压方法. 1. .tar.gz文件,这种文件是tar文件的压缩文件,可以使用tar命令进行解压 ...

最新文章

  1. html 写一个日志控件 查看log
  2. 高招攻略 领英助你清晰解读大数据专业
  3. Java7 java.util.concurrent 并发包计划
  4. 01.ShardingSphere笔记
  5. 用 Hasor 谈一谈MVC设计模式
  6. 关于 vim 的 magic 设置
  7. 国家开放大学2021春1087数学分析专题研究题目
  8. 5G多输入多输出技术,到底是个啥东东?
  9. linux网速卡怎么办_手机同是4G网络,为什么总比别人慢,学会这个方法,网速成倍提升...
  10. C# 使用 MemoryStream 将数据写入内存
  11. 如何修改zblog的css,修改Zblog中的CSS的方法
  12. php中ASCⅡ码的妙用
  13. K610D i7 D2 HM86 HD4600 安装 Mac OS 10.15.2 提供工具和EFI
  14. Qt开发笔记:OpenSSL库介绍、windows上mingw32版本的OpenSSL编译模块化
  15. Review Board了解
  16. 您的计算机究竟如何像美味的Reuben三明治
  17. 面试前的准备和注意事项(非常详细)
  18. 3d模型导入MAYA常见错误!
  19. Java中 VO、PO、DO、DTO、BO、QO、DAO、POJO的概念
  20. java毕业生设计弹幕视频网站计算机源码+系统+mysql+调试部署+lw

热门文章

  1. 《Cortex-CM3权威指南》——Cortex-CM3基础
  2. 发明计算机作文300字,四年级我的发明作文300字
  3. useradd与adduser(更全面)创建用户命令 和 让用户拥有root权限
  4. HTML标签 链接 CSS样式
  5. BugReport:前端不能成功解析后端信息造成消息阻塞问题
  6. 【独立站运营】营销邮件被判定为垃圾邮件?四个方法教你避开
  7. mysql 入库乱码,如何解决mysql中文入库乱码问题
  8. ES压测工具(一):esrally工具入门与实践
  9. 挂号信经过几次签收最终送达收件人?
  10. 使用人工神经网络预测股票价格