这个还是我当时想把一个目录下的20多个子目录(也就是文件夹)进行压缩,但是又不能全部一起压缩(压缩很吃CPU和内存的,然后我就想着python是不是可以完成,一个一个自己压缩,然后就找到了zipfile这个模块),不多说了,直接上我封装好的函数,传需要压缩的目录即可,然后使用os模块,读取一个目录下的子目录,这样也不耽误我做其他事情了。
import zipfile
import os
def zip_yasuo(start_dir):
file_news = start_dir + '.zip'
if not os.path.isfile(file_news):
z = zipfile.ZipFile(file_news, 'w', zipfile.ZIP_DEFLATED)
for dir_path, dir_names, file_names in os.walk(start_dir):
file_path = dir_path.replace(start_dir, '')
file_path = file_path and file_path + os.sep or ''
for filename in file_names:
z.write(os.path.join(dir_path, filename), file_path+filename)
z.close()
if __name__ == "__main__"
base_path = r"主目录"
base_path_list = os.listdir(base_path)
for base_path_list_one in base_path_list:
base_path_list_one_dir = os.path.join(base_path,base_path_list_one)
# 子目录
print("准备压缩需要压缩的子目录", base_path_list_one_dir)
if os.path.isdir(base_path_list_one_dir):
zip_yasuo(base_path_list_one_dir)
执行即可等待压缩即可。可以不用盯着,一个文件压缩好再压缩另一个,如果就一俩个目录,没必要这么麻烦了,多的话可以,主要是省事,压缩速度还不错。