python基础-文件目录压缩(zipfile模块)
2018-01-15 17:47
691 查看
用zip压缩文件
利用zipfile模块中的函数,Python程序可以创建和打开(或解压)zip文件
创建和添加到zip文件
#要创建zip文件,以写模式打开ZipFile即可 >>>import zipfile >>>newZip=zipfile.ZipFile('new.zip','w') #添加压缩文件 #将bldir.py文件添加到压缩文件 >>>newZip.write('bldir.py',compress_type=zipfile.ZIP_DEFLATED) >>>newZip.close() #1.以'w'打开压缩文件,将先擦除zip文件所有原有的文件,如果只希望将文件添加,第二个参数可以传'a',以添加模式打开 #2.结束后一定要关闭文件,不然会一直占用该文件。
读取zip文件
>>>import zipfile,os >>>eZip=zipfile.ZipFile('new.zip') #文件/文件夹名称列表 >>>eZip.namelist() ['bldir.py', 'img/', '.idea/', 'err1.py'] #获取某个文件的信息 >>>info=eZip.getinfo('bldir.py') #该文件的大小(单位:字节) >>>info.file_size >>>eZip.close()
解压缩
ZipFile对象的extractall()方法可以解压文件,默认为当前工作目录 >>>eZip=zipfile.ZipFile('new.zip') >>>eZip.extractall() >>>eZip.close()
压缩文件/文件夹
#path 文件或文件夹的地址 #zipPath 将压缩后的zip保存到哪个目录下,不传则是当前目录 #suffix 压缩后缀名,默认为zip def createZip(path='',zipPath='',suffix='zip'): import os,zipfile path=os.path.abspath(path) #转为绝对路径 suffix='.'+suffix.lstrip('.')#确保最后后缀名只以'.'开头 compress=['.zip','.rar'] if os.path.isdir(path): #如果传入的是目录 if(os.path.splitext(zipPath)[1] not in compress): #以目录名作为压缩文件的名称 dirname=os.path.split(path)[1] zipPath=os.path.join(zipPath,(dirname+suffix)) newZip=zipfile.ZipFile(zipPath,'a') for dirpath,dirnames,filenames in os.walk(path): for dirname in dirnames: #这个循环是为了保证空目录也可以被压缩 dp=filepath=os.path.join(dirpath,dirname) newZip.write(dp,dp[len(path):]) #重命名 for filename in filenames: filepath=os.path.join(dirpath,filename) newZip.write(filepath,filepath[len(path):]) #重命名(去掉文件名前面的绝对路径) elif os.path.isfile(path): #如果传入的是文件 if(os.path.splitext(zipPath)[1] not in compress): filename=os.path.splitext(path) filename=os.path.split(filename[0])[1] zipPath=os.path.join(zipPath,(filename+suffix)) newZip=zipfile.ZipFile(zipPath,'a') #以添加模式打开压缩文件 newZip.write(path,path[len(os.path.split(path)[0]):]) #重命名(去掉文件名前面的绝对路径) else: return '你妹的,你倒是传个你要压缩的文件或文件夹啊' newZip.close() return '压缩成功'
功能:
1.可以传文件或目录
空目录也会被压缩
2.传入方式
#1传文件,可以不指定压缩文件名,默认压缩文件名为原文件名,这里是blidir.zip >>>createZip('D:\\py\\www\\bldir.py','D:\\py\\www') #2传文件,指定压缩文件名 createZip('D:\\py\\www\\bldir.py','D:\\py\\www\\bldir1.zip') #3传目录,同样可以指定或不指定压缩文件名,也可以压缩为其他压缩文件 >>>createZip('D:\\py\\www\\ast','D:\\py\\www\\ast1.rar')
相关文章推荐
- python用zipfile模块打包文件或是目录、解压zip文件实例
- python用zipfile模块打包文件或是目录、解压zip文件实例
- python用zipfile模块打包文件或是目录、解压zip文件实例
- python用zipfile模块打包文件或是目录、解压zip文件实例
- 在python中使用zipfile压缩文件时层级很多,有很多层目录,但是需要去除这些层级目录
- 【python】详解zipfile模块读取处理压缩文件实例
- Python基础【第十一篇】文件操作(file()、open()方法和fileinput模块)
- python的zipfile实现文件目录解压缩
- python 用zipimport加载压缩文件里的模块
- Python(26)python自带的压缩模块(zipfile模块)
- 【Python】 压缩文件处理 zipfile & tarfile
- Python使用os模块和fileinput模块来操作文件目录
- 列出zip文件内全部内容 当前目录下的所有文件压缩成zip格式的文件(file.zip)
- (原创)python zipfile实现压缩整个目录和子目录
- python基础:os模块中关于文件/目录常用的函数使用方法
- Python模块学习 ---- zipfile zip文件操作
- python zipfile压缩解压缩目录
- 【Python基础】之不同的文件在不同目录下导入指定模块的方法
- 【Python】 tempfile模块 临时文件和目录的处理
- Python之文件与目录操作(os、zipfile、tarfile、shutil)