主要功能:压缩目录、压缩文件、解压文件
import os import zipfile # 压缩目录、或文件 def zip(srcPath=None, zipFilePath=None, includeDirInZip=True): if not zipFilePath: zipFilePath = srcPath + ".zip" parentDir, dirToZip = os.path.split(srcPath) # zipfile.write的第2个参数需要为相对路径,所以需要转换 def trimPath(path): # 获取目录名称,前面带有\ archivePath = path.replace(parentDir, "", 1) if parentDir: # 去掉第一个字符 archivePath = archivePath.replace(os.path.sep, "", 1) if not includeDirInZip: archivePath = archivePath.replace(dirToZip + os.path.sep, "", 1) return archivePath outFile = zipfile.ZipFile(zipFilePath, "w", compression=zipfile.ZIP_DEFLATED) if os.path.isdir(srcPath): # 目录的压缩包 for (archiveDirPath, dirNames, fileNames) in os.walk(srcPath): for fileName in fileNames: filePath = os.path.join(archiveDirPath, fileName) # write的第2个参数需要为相对路径 outFile.write(filePath, trimPath(filePath)) # 包含空目录 if not fileNames and not dirNames: zipInfo = zipfile.ZipInfo(trimPath(archiveDirPath) + "/") outFile.writestr(zipInfo, "") else: # 文件的压缩包 outFile.write(srcPath, trimPath(srcPath)) outFile.close() # 解压文件 def unzip(zipFilePath, savePath=None): r = zipfile.is_zipfile(zipFilePath) if r: if not savePath: savePath = os.path.split(zipFilePath)[0] fz = zipfile.ZipFile(zipFilePath, 'r') for file in fz.namelist(): fz.extract(file, savePath) else: print('不是一个zip文件') if __name__ == '__main__': zip(r"D:\testZip") unzip(r'D:\testZip.zip')
压缩目录代码来自:https://www.cnblogs.com/staff/p/16290689.html,除此之外,增加了压缩文件,解压文件。
分类:
Python
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具