这个模块的作用和os.open()有几分相似,os.open()是打开一个文件或文件夹,如果没有则创建;zipfile.ZipFile()的作用则是打开一个压缩包文件,如果没有则创建一个该压缩包文件,同时与os.open()相同的地方还有:在函数的参数里面都要加‘w’或‘a’,也就是进行相应的写操作。
如下边这个代码:
zipfile.ZipFile(‘Text.zip’, ‘w’)
#以写模式打开Text.zip文件,若Text.zip文件不存在则创建该文件
``
同样,该方法和os.write()方法相似,都是在该文件中写入内容。
但值得注意的是,Zipfile下的write()方法写入的是文件夹或文件,而不是某一行文字或内容。
如下面这一行代码:
zipfiles.write(filenames)
#在压缩文件zipfiles中写入filenames下的文件,
在这里大灰狼建议write()的括号中传入的参数最好是该文件的绝对路径,目的是为了方便程序对该文件进行压缩,不至于因找不到该文件而出错。
同时还有一个比较重要的方法是OS.walk()方法,
在这里介绍一下该方法的作用,os.walk(path)方法传入的一个文件夹的绝对路径,并且该方法有三个返回值:
-
当前文件夹名称的字符串
-
当前文件的子文件夹的字符串的列表
-
当前文件夹中文件的字符串的列表
搞清楚了这三个问题,接下来就是编写代码的阶段了,
同在进行文件压缩的时候,我们有时候希望对整个文件夹进行压缩,而有些时候我们则希望对该文件夹中的某一类型的文件进行压缩,如对文件中的所有.txt文件进行压缩。
所以为了方便小伙伴们直接调用,我将这两种情况分别写成了两个函数形式,在调用的时候只需要向该函数中传入你想要压缩的文件夹的路径即可。
import os
import zipfile
path1 = 'D:\dmp'
#文件压缩函数
def fileToZip(path):
path = path.split('\\')
path[0] = path[0][-2: len(path[0])]
path = '/'.join(path)
number = 1
while (True):
fileName = os.path.basename(path1) + '_' + str(number) + '.zip'
if not os.path.exists(fileName):
break
number += 1
zipfiles = zipfile.ZipFile(fileName, 'w')
for foldername, subfolder, filename in os.walk(path):
print('文件夹:%s' % (foldername))
for subfoldername in subfolder:
print('子文件夹:%s/%s' % (foldername, subfoldername))
#zipfiles.write(os.path.join(foldername, subfoldername))
for filenames in filename:
print('子文件:%s/%s' % (foldername, filenames))
#if filenames.endswith('.txt'): #判断文件是否为.txt后缀
zipfiles.write(os.path.join(foldername, filenames))
zipfiles.close()
fileToZip(path1)
在代码中可将判断语句进行修改成其他文件,如.py ,xlsx等
import os
import zipfile
path1 = 'D:\dmp'
# 资料分享
这是我从某优质机构弄来的一些资料,内容我认为确实称得上优质二字,**如需领取,请点赞这篇文章,关注我然后[点击这里即可免费领取](https://gitee.com/vip204888/java-p7)**
**首先分享一份学习大纲,内容较多,涵盖了互联网行业所有的流行以及核心技术,以截图形式分享:**
(亿级流量性能调优实战+一线大厂分布式实战+架构师筑基必备技能+设计思想开源框架解读+性能直线提升架构技术+高效存储让项目性能起飞+分布式扩展到微服务架构.........实在是太多了)
![](https://img-blog.csdnimg.cn/img_convert/a792073bb5945eb2c2c176db172d1445.png)
**其次分享一些技术知识,以截图形式分享一部分:**
Tomcat架构解析:
![](https://img-blog.csdnimg.cn/img_convert/f7c6ab16b1f6a6277d9b97ffa88bce09.png)
算法训练+高分宝典:
![](https://img-blog.csdnimg.cn/img_convert/d4c72090e0c712e8e78700fd3d8f943e.png)
Spring Cloud+Docker微服务实战:
![](https://img-blog.csdnimg.cn/img_convert/e5d9d5f2214e544316daf9f1a0aefcdf.png)
**最后分享一波面试资料:**
> 切莫死记硬背,小心面试官直接让你出门右拐
1000道互联网Java面试题:
![](https://img-blog.csdnimg.cn/img_convert/64b7e62ce4ae7272ca437ad30ea027f6.png)
Java高级架构面试知识整理:
![](https://img-blog.csdnimg.cn/img_convert/7b27a79ff2dc621cdc216048eaedf580.png)
服务实战:
[外链图片转存中...(img-7AdYhaV9-1628238127562)]
**最后分享一波面试资料:**
> 切莫死记硬背,小心面试官直接让你出门右拐
1000道互联网Java面试题:
[外链图片转存中...(img-HC4HPNyX-1628238127564)]
Java高级架构面试知识整理:
[外链图片转存中...(img-79zryOUU-1628238127565)]