python的zipfile实现文件目录解压缩

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

压缩文件夹的函数:

 1 # coding:utf-8
 2 import os
 3 import zipfile
 4
 5 def zipdir(dirToZip,savePath):
 6     if not os.path.isdir(dirToZip):
 7         raise Exception,u"zipDir Error,not a dir‘%‘".format(dirToZip)
 8
 9     (saveDir,_)=os.path.split(savePath)
10     if not os.path.isdir(saveDir):
11         os.makedirs(saveDir)
12
13     zipList = []
14
15     for root,dirs,files in os.walk(dirToZip):
16         for fileItem in files:
17             zipList.append(os.path.join(root,fileItem))
18         for dirItem in dirs:
19             zipList.append(os.path.join(root,dirItem))
20
21     zf = zipfile.ZipFile(savePath,‘w‘,zipfile.ZIP_DEFLATED)
22
23     for tar in zipList:
24         if tar != dirToZip:
25             zf.write(tar,tar.replace(dirToZip,‘‘))
26         else:
27             zf.write(tar)
28
29     zf.close()

解压的函数:

 1 def unZipFile(unZipSrc,targeDir):
 2     if not os.path.isfile(unZipSrc):
 3         raise Exception,u‘unZipSrc not exists:{0}‘.format(unZipSrc)
 4
 5     if not os.path.isdir(targeDir):
 6         os.makedirs(targeDir)
 7
 8     print(u‘开始解压缩文件:{0}‘.format(unZipSrc))
 9
10     unZf = zipfile.ZipFile(unZipSrc,‘r‘)
11
12     for name in unZf.namelist() :
13         unZfTarge = os.path.join(targeDir,name)
14
15         if unZfTarge.endswith("/"):
16             #empty dir
17             splitDir = unZfTarge[:-1]
18             if not os.path.exists(splitDir):
19                 os.makedirs(splitDir)
20         else:
21             splitDir,_ = os.path.split(targeDir)
22
23             if not os.path.exists(splitDir):
24                 os.makedirs(splitDir)
25
26             hFile = open(unZfTarge,‘wb‘)
27             hFile.write(unZf.read(name))
28             hFile.close()
29
30     print(u‘解压缩完毕,目标文件目录:{0}‘.format(targeDir))
31
32     unZf.close()

调用:

if __name__ == ‘__main__‘:
    dirpath = os.path.abspath(u‘.\\new‘)
    savepath = os.path.abspath(u‘.\\new.zip‘)

#    zipdir(dirpath,savepath)
    unZipFile(savepath,dirpath)
时间: 2024-11-10 12:10:32

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

《转》python的zipfile压缩、解压缩

网上搜索了很多关于python的zipfile压缩.解压缩.觉得讲述比较详细,例子也很明了.由于比较懒,就直接复制了. 以下内容大部分转于 http://blog.csdn.net/jgood/article/details/4351911 zip文件格式是通用的文档压缩标准,在ziplib模块中,使用ZipFile类来操作zip文件,下面具体介绍一下: class zipfile.ZipFile(file[, mode[, compression[, allowZip64]]]) 创建一个Zi

Python 的 zipfile 模块

zipfile.ZipFile(file,mode,compress_type,allowZip64) #创建一个ZipFile对象    file : zip文件名    mode : 'r'读已存在的zip文件,'w'新建或覆盖已存在的zip文件,'a'附加到现存的 zip文档    compress_type : zipfile.ZIP_STORED 默认不压缩, zipfile.ZIP_DEFLATED 压缩    allowZip64 : 默认 False, zip超过2G设置为Tru

Python之路(第十八篇)shutil 模块、zipfile模块、configparser模块

一.shutil 模块 1.shutil.copyfileobj(fsrc, fdst[, length]) 将文件内容拷贝到另一个文件中,需要打开文件 import shutil shutil.copyfileobj(open("old_test.txt","r"),open("new_test.txt","w")) 输出结果 2.shutil.copyfile(src,dst) 复制文件内容到另外一个文件,不需要打开文件,

python学习之函数进阶三

一.模块介绍 os模块常用方法 os.getcwd()    #获取当前工作目录 os.listdir("F:\\")    #获取指定目录下的所有文件和目录 os.remove('b.json')    #删除指定文件 os.stat('a.json')    #获取文件属性 os.chmod()        #修改文件属性 os.mkdir('hyh')    #创建目录 os.rmdir('hyh')    #删除目录 os.system('dir')    #运行shell命

java解压缩.gz .zip .tar.gz等格式的压缩包方法总结

1..gz文件是linux下常见的压缩格式.使用 java.util.zip.GZIPInputStream即可,压缩是 java.util.zip.GZIPOutputStream 1 public static void unGzipFile(String sourcedir) { 2 String ouputfile = ""; 3 try { 4 //建立gzip压缩文件输入流 5 FileInputStream fin = new FileInputStream(source

python经典例子

http://wangwei007.blog.51cto.com/68019/1106735  检查Linux系统日志error和mysql错误日志的脚本 http://wangwei007.blog.51cto.com/68019/1102836  pickle http://wangwei007.blog.51cto.com/68019/1045577  python用zipfile模块打包文件或是目录.解压zip文件实例 http://blog.163.com/kefan_1987/blo

Mac 下 Python 安装目录

easy_install 自动下载的目录 /Library/Python/版本/site-packages/ 执行文件目录 /usr/bin/python

JAVA,使用ant-1.6.5,压缩、解压缩辅助类代码

有的时候,需要做文件的压缩.解压缩. java自身提供了已压缩,解压缩的原生类库.不过有开源代码的话,我一般是选择使用开源类库. 下面就贴一下,我使用ant-1.6.5的zip压缩.解压缩的代码吧. ZipUtil.java import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStr

java 版本压缩、解压缩zip

import java.io.*; import java.util.*; import java.util.zip.ZipOutputStream; import java.util.zip.ZipEntry; import java.util.zip.ZipFile; public class FileMgr { public FileMgr() { } /** * 压缩文件 * @param srcfile File[] 需要压缩的文件列表 * @param zipfile File 压缩