python遍历目录压缩文件夹_Python实现多级目录压缩与解压文件的方法

本文实例讲述了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程序设计有所帮助。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值