本文实例讲述了Python实现多级目录压缩与解压文件的方法。分享给大家供大家参考,具体如下:
咱向来就是拿来主意,也发个东西供同行“拿来”使用吧
咱信奉的就是少量的代码完成大量的工作,虽然代码不多,但还是要用大脑的。发出来供大家参考
功能:
- 支持中文路径,支持多级目录
- 支持跨平台,在linux和window下都可直接使用
- 压缩的多态性
- 压缩包不带级父文件夹目录压缩
- 压缩包带父级文件夹目录
- 不指定目标文件与路径压缩
- 指定压缩包名称不指定路径压缩
还是看代码吧
#coding:utf-8 #压缩解压文件模块 #支持中文路径,支持多级目录 #支持跨平台,在linux和window下都可直接使用 #python 2.7.2 #author:xieShuxu #QQ:258356793 #Email:sondx@qq.com import zipfile,os class ZipException(Exception): pass def unZipFile(zipPath,unZipPath=''): '''解压文件 zipPath 要解压的文件路径 unZipPath 解压目标路径 默认解压到zipPath所在目录 ''' try: filePath=filePath.decode('utf-8'); zipFilePath=zipFilePath.decode('utf-8'); except: print '================' if not os.path.exists(zipPath): raise ZipException,'function unZipFile:not exists file or dir(%s)' %zipPath; if unZipPath=='': unZipPath=os.path.splitext(zipPath)[0]; if not unZipPath.endswith(os.sep): unZipPath+=os.sep; z = zipfile.ZipFile(zipPath, 'r') #zipInfolist=z.namelist(); for k in z.infolist(): savePath=unZipPath+k.filename; saveDir=os.path.dirname(savePath); if not os.path.exists(saveDir): os.makedirs(saveDir); f=open(savePath,'wb'); f.write(z.read(k)); f.close(); z.close(); #print unZipPath global _iterateExeZipFile; def exeZipFile(filePath,zipFilePath=''): '''压缩文件 filePath 要解压的文件路径 可以是文件或者目录 os.sep结尾表示压缩该目录下的子文件和文件夹 不包含该文件夹,否则包含该文件夹压缩 ZipFilePath 压缩包文件路径 也可只传文件名 默认压缩到filePath的父级目录下 ''' filePath=filePath.decode('utf-8'); zipFilePath=zipFilePath.decode('utf-8'); #压缩文件不存在直接返回 if not os.path.exists(filePath): raise ZipException,'function exeZipFile:not exists file or dir(%s)' %filePath; # 是否包含父级目录压缩 hasPDir=not filePath.endswith(os.sep); if not hasPDir: filePath=os.path.dirname(filePath); print filePath #校验备份文件路径 if zipFilePath=='': zipFilePath=os.path.splitext(filePath)[0]+'.zip'; elif zipFilePath.find(os.sep)==-1:#只传文件名的处理 zipFilePath=os.path.dirname(filePath)+os.sep+zipFilePath; #校验创建备份路径目录 if not os.path.exists(os.path.dirname(zipFilePath)): os.makedirs(os.path.dirname(zipFilePath)); #初始化压缩包中的根目录 zipRoot=''; if hasPDir: zipRoot=os.path.split(filePath)[1]; #开始压缩 z = zipfile.ZipFile(zipFilePath, 'w') if os.path.isfile(filePath): z.write(filePath,os.path.split(filePath)[1]); else: _iterateExeZipFile(filePath,zipRoot,z); z.close(); def _iterateExeZipFile(dirPath,zipRoot,z):
压缩使用的例子:
if __name__=='__main__': #压缩包不带级父文件夹目录 testdir='D:\\codeSource\\linuxAgent\\' zipFilePath='D:\\codeSource\\压缩包不带父级目录.zip' exeZipFile(testdir,zipFilePath); #压缩包带父级文件夹目录 testdir='D:\\codeSource\\linuxAgent'#不带后缀斜线 zipFilePath='D:\\codeSource\\压缩包带父级目录.zip' exeZipFile(testdir,zipFilePath); #不指定目标文件与路径压缩 testdir='D:\\codeSource\\linuxAgent' exeZipFile(testdir); #指定压缩包名称不指定路径压缩 testdir='D:\\codeSource\\linuxAgent\\' exeZipFile(testdir,'仅指定名称压缩包.zip');
解压的例子:
#指定解压目录解压文件 testdir=u'D:\\codeSource\\仅指定名称压缩包\\' zipFilePath=u'D:\\codeSource\\仅指定名称压缩包.zip' unZipFile(zipFilePath,testdir); #不指定目录解压 zipFilePath=u'D:\\codeSource\\仅指定名称压缩包.zip' unZipFile(zipFilePath);
好了!就这么多,如果你觉得有用就顶一下吧。有问题也可以联系我
更多关于Python相关内容感兴趣的读者可查看本站专题:《Python文件与目录操作技巧汇总》、《Python文本文件操作技巧汇总》、《Python数据结构与算法教程》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》及《Python入门与进阶经典教程》
希望本文所述对大家Python程序设计有所帮助。
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
暂无评论...
稳了!魔兽国服回归的3条重磅消息!官宣时间再确认!
昨天有一位朋友在大神群里分享,自己亚服账号被封号之后居然弹出了国服的封号信息对话框。
这里面让他访问的是一个国服的战网网址,com.cn和后面的zh都非常明白地表明这就是国服战网。
而他在复制这个网址并且进行登录之后,确实是网易的网址,也就是我们熟悉的停服之后国服发布的暴雪游戏产品运营到期开放退款的说明。这是一件比较奇怪的事情,因为以前都没有出现这样的情况,现在突然提示跳转到国服战网的网址,是不是说明了简体中文客户端已经开始进行更新了呢?
更新日志
2024年11月26日
2024年11月26日
- 凤飞飞《我们的主题曲》飞跃制作[正版原抓WAV+CUE]
- 刘嘉亮《亮情歌2》[WAV+CUE][1G]
- 红馆40·谭咏麟《歌者恋歌浓情30年演唱会》3CD[低速原抓WAV+CUE][1.8G]
- 刘纬武《睡眠宝宝竖琴童谣 吉卜力工作室 白噪音安抚》[320K/MP3][193.25MB]
- 【轻音乐】曼托凡尼乐团《精选辑》2CD.1998[FLAC+CUE整轨]
- 邝美云《心中有爱》1989年香港DMIJP版1MTO东芝首版[WAV+CUE]
- 群星《情叹-发烧女声DSD》天籁女声发烧碟[WAV+CUE]
- 刘纬武《睡眠宝宝竖琴童谣 吉卜力工作室 白噪音安抚》[FLAC/分轨][748.03MB]
- 理想混蛋《Origin Sessions》[320K/MP3][37.47MB]
- 公馆青少年《我其实一点都不酷》[320K/MP3][78.78MB]
- 群星《情叹-发烧男声DSD》最值得珍藏的完美男声[WAV+CUE]
- 群星《国韵飘香·贵妃醉酒HQCD黑胶王》2CD[WAV]
- 卫兰《DAUGHTER》【低速原抓WAV+CUE】
- 公馆青少年《我其实一点都不酷》[FLAC/分轨][398.22MB]
- ZWEI《迟暮的花 (Explicit)》[320K/MP3][57.16MB]