python一次性解压多层嵌套zip压缩包
zip包里的结构不是固定的,有可能只需要解压一次就完成了,有可能解压后里面还存在zip文件,需要继续进行解压缩
写了个简单的递归函数来实现解压非固定结构zip包,若解压后的zip子目录下仍含有zip文件,则调用自身继续进行解压操作
解压函数unzip通过传入压缩文件所在绝对目录和压缩文件名进行解压操作
解压文件为C:\Users\xiangmin\Downloads\1522226134736.zip
import zipfile,os
def unzip(path,zfile):
file_path=path+os.sep+zfile
desdir=path+os.sep+zfile[:zfile.index('.zip')]
srcfile=zipfile.ZipFile(file_path)
for filename in srcfile.namelist():
srcfile.extract(filename,desdir)
if filename.endswith('.zip'):
# if zipfile.is_zipfile(filename):
path=desdir
zfile=filename
unzip(path,zfile) path=r'C:\Users\xiangmin\Downloads'
zfile=r'1522226134736.zip'
unzip(path,zfile)
python一次性解压多层嵌套zip压缩包的更多相关文章
- PCB 无需解压,直接读取Zip压缩包指定文件 实现方法
最近有一项需求,将电测试点数后台批量写入到工程系统流程指示中,而电测试文件存在压缩包中,压缩包存在公共网络盘 示例图: 一.采用原始方法(4步完成): 第1步:.网络盘ZIP拷到本地, 第2步:解压Z ...
- centos6.5解压及压缩zip压缩包
查看zip压缩文件的内容而不解压:unzip -l filename.zip 将zip包解压到指定路径(若不指定路径则为当前目录):unzip filename.zip -d /usr/file 压缩 ...
- 【python】解压文件
参考:http://essen.iteye.com/blog/1941489 tarfile模块 具体使用方法: https://docs.python.org/2/library/tarfile.h ...
- 【Linux命令】linux一次性解压多个.gz或者.tar.gz文件
原文:linux一次性解压多个.gz或者.tar.gz文件 解压多个压缩包 对于解压多个.gz文件的,用此命令: for gz in *.gz; do gunzip $gz; done 对于解压多个. ...
- linux中tar命令(打包、压缩、解压)、zip和unzip、rar多种压缩文件
一.名词解释 打包:将一大堆文件或目录变成一个总的文件[tar命令] 压缩:将一个大的文件通过一些压缩算法变成一个小文件[gzip,bzip2等] Linux中很多压缩程序只能针对一个文件进行压缩,这 ...
- python-----自动解压并删除zip文件
如何自动解压并删除zip? 如何解压 → 使用内置模块来实现(shutil.unpack_archive) 如何删除zip → 使用内置模块os来实现(os.remove) 如何监测zip的出 ...
- Java解压上传zip或rar文件,并解压遍历文件中的html的路径
1.本文只提供了一个功能的代码 public String addFreeMarker() throws Exception { HttpSession session = request.getSe ...
- python循环解压rar文件
python循环解压rar文件 C:. │ main.py │ ├─1_STL_算法简介 │ STL_算法简介.rar │ └─2_STL_算法_填充新值 STL_算法_填充新值.rar 事情是这样的 ...
- C#压缩或解压(rar和zip文件)
/// <summary> /// 解压RAR和ZIP文件(需存在Winrar.exe(只要自己电脑上可以解压或压缩文件就存在Winrar.exe)) /// </summary&g ...
随机推荐
- 初学python之路-day01
第一天学习python,先了解到了进制之间的转换关系. 如二进制与十进制的转换,如1111转成十进制为15,1111从左向右可看出2^3+2^2+2^1+2^0为8+4+2+1=15.记住前8位1的二 ...
- 11、Grafana 5.0 新功能特性(译文)
Grafana v5.0的新功能 这是Grafana有史以来最重大的更新. 本文将详细介绍主要的新功能和增强功能. New Dashboard Layout Engine enables a mu ...
- Hadoop生态组件Hive,Sqoop安装及Sqoop从HDFS/hive抽取数据到关系型数据库Mysql
一般Hive依赖关系型数据库Mysql,故先安装Mysql $: yum install mysql-server mysql-client [yum安装] $: /etc/init.d/mysqld ...
- 【转】GB2312、GBK和UTF-8三种编码的简要说明
原文地址:http://www.cnblogs.com/hust-yingjie/p/5481966.htmlGB2312.GBK和UTF-8都是一种字符编码,除此之外,还有好多字符编码.只是对于我们 ...
- Grafana和influxdb监控nginx日志中的请求响应时间图形化监控
监控效果如图: 监控方法: 通过logstash过滤nginx日志,然后解析出nginx日志中的request time字段 然后output到influxdb时序数据库中 通过grafana展示数据 ...
- Python学习(三十七)—— 模板语言之自定义filter和中间件
一.模板语言之自定义filter 自定义filter文件存放位置 模板中自定义函数 - 在已注册的app中创建一个名字叫 templatetags 文件夹 - 任意创建一个py文件 - 创建名字交 r ...
- Android键盘显示和隐藏
一.不自动弹出键盘: 带有EditText控件的在第一次显示的时候会自动获得focus,并弹出键盘,如果不想自动弹出键盘,有两种方法: 方法一:在mainfest文件中把对应的activity设置 a ...
- 11 安装已集成HA的树莓派镜像Hassbian
2017-09-04 10:40:47 下载Hassbian镜像文件,浏览https://github.com/home-assistant/pi-gen/releases/tag/v1.23,查看最 ...
- 明天开始学习 Hibernate
明天开始学 Hibernate ,想简单的了解一下 Hibernate,也借此机会了解一下 ORM 计划用 5 天的时间看完,包括整理笔记 加油吧,少年~~
- url 中文及特殊字符转码
#include <ctype.h> std::string UrlEncode(const std::string& szToEncode) { std::string s ...