【Python】将文件夹压缩成zip包

该博客介绍了使用Python将文件夹压缩成zip包的方法。先创建空的zip文件,再遍历读取文件夹中的文件并依次塞进zip文件。还给出将testDir文件夹压缩成test.zip的示例,以及动态调整工作目录时的代码修改说明。

使用python将文件夹压缩成zip包的过程:

先创建空的zip文件,然后遍历读取文件夹中文件,依次塞进zip文件中,即完成压缩。

例如,要将testDir文件夹压缩成test.zip,并存放在同级目录。脚本也放在testDir同级目录。

实现代码如下:

#!/usr/local/bin/python3
import zipfile #引入zip管理模块
import os
import sys #引入sys模块,获取脚本所在目录

#定义一个函数,递归读取absDir文件夹中所有文件,并塞进zipFile文件中。参数absDir表示文件夹的绝对路径。
def writeAllFileToZip(absDir,zipFile):
    for f in os.listdir(absDir):
        absFile=os.path.join(absDir,f) #子文件的绝对路径
        if os.path.isdir(absFile): #判断是文件夹,继续深度读取。
            relFile=absFile[len(os.getcwd())+1:] #改成相对路径,否则解压zip是/User/xxx开头的文件。
            zipFile.write(relFile) #在zip文件中创建文件夹
            writeAllFileToZip(absFile,zipFile) #递归操作
        else: #判断是普通文件,直接写到zip文件中。
            relFile=absFile[len(os.getcwd())+1:] #改成相对路径
            zipFile.write(relFile)
    return
    
zipFilePath=os.path.join(sys.path[0],"test.zip") 
#先定义zip文件绝对路径。sys.path[0]获取的是脚本所在绝对目录。
#因为zip文件存放在脚本同级目录,所以直接拼接得到zip文件的绝对路径。

zipFile=zipfile.ZipFile(zipFilePath,"w",zipfile.ZIP_DEFLATED) 
#创建空的zip文件(ZipFile类型)。参数w表示写模式。zipfile.ZIP_DEFLATE表示需要压缩,文件会变小。ZIP_STORED是单纯的复制,文件大小没变。

absDir=os.path.join(sys.path[0],"testDir") 
#要压缩的文件夹绝对路径。

writeAllFileToZip(absDir,zipFile) #开始压缩。如果当前工作目录跟脚本所在目录一样,直接运行这个函数。
#执行这条压缩命令前,要保证当前工作目录是脚本所在目录(absDir的父级目录)。否则会报找不到文件的错误。
print("压缩成功")

在shell环境中先cd到脚本所在目录,再运行。

如果当前工作目录是动态的(比如你把脚本拖到终端运行时,工作目录不一定是脚本所在目录),需要动态调整工作目录,修改代码如下:

	cwd=os.getcwd() #获取当前工作目录
	os.chdir(os.path.dirname(absDir))  #修改当前工作目录,指向要压缩文件夹absDir的父级目录。
	writeAllFileToZip(absDir,zipFile) #开始压缩
	os.chdir(cwd) #回到初始工作目录
	print("压缩成功")
电子元器件选型-电感选型规范一、 选型原则1.0 总则1.0.1 电感器在MRP II 中从3个分类(1001~1003)改变为7个分类(1001~1007): 1001 高频插装电感(固定插装) 1002 可变电感(感值可变,插装或贴片) 1003 片状电感(固定贴片) 1004 共模电感(插装或贴片) 1005 空心线圈 (插装或贴片) 1006 工频功率电感(固定插装) 1007 EMI磁珠(插装或贴片) 1.0.2 在MRP II 中,优选等级用M标记的项目限制在公司电气使用,用T标记的项目限制在话机中使用。 在公司技术的产品中均不使用上述标记的项目。 1.0.3 电感器的归一化方向为: (1)1001类插装固定电感器将淘汰小电流项目,用1003贴片固定电感器替代,保留功率型电感。 (2)1003类片状电感器逐步向小型化、叠层化方向发展。 优选库将适应发展方向而动态调整,这类电感器是通用小电流电感器的优选器件。 (3)1002类可变电感,括中周和可调线圈,数量少, 只给出目前的优选库。 (4)1004类功率型优选插装,信号型优选表面贴。 (5)1005类主要用于微调,高频使用项目逐步淘汰,中低频使用保留。 (6)1006类是用硅钢片制作的,只能用于工频范围,目前只有MBC采用。 (7)尽量采用网上器件,严格控制新器件数量的增长 (8)不论那种电感器,都不能采用边缘极限规格。 1.1 插装固定差模电感 a. 优选厂家 公司技术: 金骏、TDK、海光 公司电气:金骏 、海光、晶石、磁通 b.标称电感:采用E6系列,即标称感值为1.0、1.5、2.2、3.3、4.7、6.8或以上数值再乘以 。精度20%为优选,精度要求高时可以选择10%。。 尽量选择厂家标准产品。电感器选型规范第2页,共10页c.额定上限工作温度:优选130 ℃等级的材料,即B CLASS。d.抗电强度:线圈与磁芯之间施加1500V,50Hz电压,持续时间1min,漏电流要小于1mA,无击穿和飞弧;e.优选结构类型:工字电感优选。色环电感将逐步淘汰。 对于功率型电感,虽然PULSE、COILCRAFT和TDK有表面贴型产品,但考虑到目前成本相差太大,以插装为优选。f.优选磁芯:考虑到成本问题,非标准产品请尽量选用国产磁芯。g.对公司电气的自设计或公司技术委托公司电气设计用于电源的电感器,根据具体情况可以不受以上电感标称值限制。具体设计规范
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值