主要是 解决了压缩目录下 空文件夹 的压缩 和 解压缩问题

压缩文件夹的函数:

 # coding:utf-
import os
import zipfile def zipdir(dirToZip,savePath):
if not os.path.isdir(dirToZip):
raise Exception,u"zipDir Error,not a dir'%'".format(dirToZip) (saveDir,_)=os.path.split(savePath)
if not os.path.isdir(saveDir):
os.makedirs(saveDir) zipList = [] for root,dirs,files in os.walk(dirToZip):
for fileItem in files:
zipList.append(os.path.join(root,fileItem))
for dirItem in dirs:
zipList.append(os.path.join(root,dirItem)) zf = zipfile.ZipFile(savePath,'w',zipfile.ZIP_DEFLATED) for tar in zipList:
if tar != dirToZip:
zf.write(tar,tar.replace(dirToZip,''))
else:
zf.write(tar) zf.close()

解压的函数:

 def unZipFile(unZipSrc,targeDir):
if not os.path.isfile(unZipSrc):
raise Exception,u'unZipSrc not exists:{0}'.format(unZipSrc) if not os.path.isdir(targeDir):
os.makedirs(targeDir) print(u'开始解压缩文件:{0}'.format(unZipSrc)) unZf = zipfile.ZipFile(unZipSrc,'r') for name in unZf.namelist() :
unZfTarge = os.path.join(targeDir,name) if unZfTarge.endswith("/"):
#empty dir
splitDir = unZfTarge[:-]
if not os.path.exists(splitDir):
os.makedirs(splitDir)
else:
splitDir,_ = os.path.split(targeDir) if not os.path.exists(splitDir):
os.makedirs(splitDir) hFile = open(unZfTarge,'wb')
hFile.write(unZf.read(name))
hFile.close() print(u'解压缩完毕,目标文件目录:{0}'.format(targeDir)) unZf.close()

调用:

if __name__ == '__main__':
dirpath = os.path.abspath(u'.\\new')
savepath = os.path.abspath(u'.\\new.zip') # zipdir(dirpath,savepath)
unZipFile(savepath,dirpath)

python的zipfile实现文件目录解压缩的更多相关文章

  1. 【转】python的zipfile压缩、解压缩

    网上搜索了很多关于python的zipfile压缩.解压缩.觉得讲述比较详细,例子也很明了.由于比较懒,就直接复制了. 以下内容大部分转于 http://blog.csdn.net/jgood/art ...

  2. python中zipfile模块实例化解析

    文章内容由--“脚本之家“--提供,在此感谢脚本之家的贡献,该网站网址为:https://www.jb51.net/ 简介: zipfile是python里用来做zip格式编码的压缩和解压缩的,由于是 ...

  3. Python中zipfile压缩文件模块的使用

    目录 zipfile 压缩一个文件 解压文件 高级应用 利用 zipfile 模块破解压缩文件口令:Python脚本破解压缩文件口令 zipfile Python 中 zipfile 模块提供了对 z ...

  4. Python: 使用zipfile+io模块在内存中进行zip操作

    #!/usr/bin/env python #coding=utf-8 ''' 版权所有 (c) 2014 yao_yu (http://blog.csdn.net/yao_yu_126) 本代码采用 ...

  5. python模块--zipfile文件压缩

    zipfile模块是python中一个处理压缩文件的模块,解决了不少我们平常需要处理压缩文件的需求 ,本文主要谈谈zipfile几个常用的用法. 首先我在Windows操作系统中创建如下的文件目录: ...

  6. python模块 zipfile

    zipfile是python里用来做zip格式编码的压缩和解压缩的,由于是很常见的zip格式,所以这个模块使用频率也是比较高的zipfile里有两个非常重要的class, 分别是ZipFile和Zip ...

  7. python中zipfile文件名编码的问题

    在python中编程导入压缩包,利用zipfile包,从zipinfo读取文件名总是出错,创建的文件名是乱码,写入pgsql更是出错. 但在ubuntu下测试却正常,在windows下测试总是失败. ...

  8. python用zipfile模块打包文件或是目录、解压zip文件实例

    #!/usr/bin/env python # -*- coding: utf-8 -*- from zipfile import * import zipfile #解压zip文件 def unzi ...

  9. python 序列解包(解压缩)

    序列解包(解压缩) 所学的解压缩 如果我们给出一个列表,我们需要一次性取出多个值,我们是不是可以用下面的方式实现呢? name_list = ['nick', 'egon', 'jason'] x = ...

随机推荐

  1. Git使用帮助

    1. 本地创建新项目 git init git add . git commit -m "First commit" 2. 本地代码同步Push到远程仓库 git remote a ...

  2. VMware - "Determining IP Information for eth0...Failed

    Linux ifup eth0 出现错误: Dertermining IP information for eth0....failed - no link present check cable D ...

  3. js 不固定传参

      js 不固定传参 CreationTime--2018年7月2日15点18分 Author:Marydon /** * 声明一个函数 * @explain 传参个数不确定 */ function ...

  4. mybatis开始

    1,安装mysql. 2,安装nvicat. 云盘上已经上传,另外也可看这里: http://www.cnblogs.com/alsf/diary/2017/12/26/8117263.html 3, ...

  5. 位(bit)与字节(byte)

    bit就是位,也叫比特位,是计算机表示数据最小的单位. byte就是字节,1byte=8bit,1byte就是1B: 一个字符=2字节: 1KB=1024B 一个英文字母,无论大写和小写都是一个字符: ...

  6. js特效,轻松实现内容的无缝平滑滚动

    <!DOCTYPE   html   PUBLIC   "-//W3C//DTD   XHTML   1.0   Transitional//EN"   "http ...

  7. mysql root用户密码个性

    对名为“mysql”数据库下的表“user”进行操作如下语句:update user set password=PASSWORD("your_password") where us ...

  8. Memory leak patterns in JavaScript

    Handling circular references in JavaScript applications Plugging memory leaks in JavaScript is easy ...

  9. J2EE学术交流感悟——分层

        学术交流进行了一周,是关于J2EE的学术报告. 目的是让我们在学习的时候对"所学知识"有一个宏观的认识. 開始是以为环绕"J2EE"进行解说,怕自己没有 ...

  10. C编程测试存储格式为大段还是小段

    目前,计算机存储系统有2种存储格式,大端和小端.数据在内存中存储时以字节为单位,一个int类型有4个字节,这就导致是高字节对应低地址(大端模式),高字节对应高地址(小端模式).大端和小端模式本身没有对 ...