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

您所在的位置:网站首页 pycharm怎么打包成zip 【Python】将文件夹压缩成zip包

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

2024-07-15 14:12| 来源: 网络整理| 查看: 265

使用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("压缩成功")


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3