欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程语言 > python >内容正文

python

python生成多级文件夹_Python zipfile压缩文件和文件夹(支持多级目录)

发布时间:2025/4/16 python 68 豆豆
生活随笔 收集整理的这篇文章主要介绍了 python生成多级文件夹_Python zipfile压缩文件和文件夹(支持多级目录) 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

支持压缩单个文件和多级文件夹

使用方法

zip_compress(to_zip,save_zip_name):#to_zip表示源文件或者源目录,save_zip_name表示目的zip文件(可带目录)

思路:

先判断目的文件目录是否存在,如果不存在,就创建;

判断被压缩的是文件还是目录

如果是文件,直接压缩

如果是目录,遍历后逐一压缩

#!/usr/bin/env python3

# -*- coding: utf-8 -*-

import os,zipfile

def zip_compress(to_zip,save_zip_name):#save_zip_name是带目录的,也可以不带就是当前目录

#1.先判断输出save_zip_name的上级是否存在(判断绝对目录),否则创建目录

save_zip_dir=os.path.split(os.path.abspath(save_zip_name))[0]#save_zip_name的上级目录

print(save_zip_dir)

if not os.path.exists(save_zip_dir):

os.makedirs(save_zip_dir)

print('创建新目录%s'%save_zip_dir)

f = zipfile.ZipFile(os.path.abspath(save_zip_name),'w',zipfile.ZIP_DEFLATED)

# 2.判断要被压缩的to_zip是否目录还是文件,是目录就遍历操作,是文件直接压缩

if not os.path.isdir(os.path.abspath(to_zip)):#如果不是目录,那就是文件

if os.path.exists(os.path.abspath(to_zip)):#判断文件是否存在

f.write(to_zip)

f.close()

print('%s压缩为%s' % (to_zip, save_zip_name))

else:

print ('%s文件不存在'%os.path.abspath(to_zip))

else:

if os.path.exists(os.path.abspath(to_zip)):#判断目录是否存在,遍历目录

zipList = []

for dir,subdirs,files in os.walk(to_zip):#遍历目录,加入列表

for fileItem in files:

zipList.append(os.path.join(dir,fileItem))

# print('a',zipList[-1])

for dirItem in subdirs:

zipList.append(os.path.join(dir,dirItem))

# print('b',zipList[-1])

#读取列表压缩目录和文件

for i in zipList:

f.write(i,i.replace(to_zip,''))#replace是减少压缩文件的一层目录,即压缩文件不包括to_zip这个目录

# print('%s压缩到%s'%(i,save_zip_name))

f.close()

print('%s压缩为%s' % (to_zip, save_zip_name))

else:

print('%s文件夹不存在' % os.path.abspath(to_zip))

总结

以上是生活随笔为你收集整理的python生成多级文件夹_Python zipfile压缩文件和文件夹(支持多级目录)的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。