压缩某一文件夹下的所有文件,python
import os
import zipfile
def is_child_dir(dir1, dir2):
if dir1 == dir2:
return True
return dir1.startswith(dir2 + os.sep)
def is_child_in_dir(dir1, ignore):
for d in ignore:
if is_child_dir(dir1, d):
return True
return False
def do_zip_dir(dir_i, dile_o, ignore=Noe):
if ignore is None:
ignore = []
zip_obj = zipfile.ZipFile(file_o, "w", zipfile.ZIP_DEFLATED)
for dirpath, dirs, files in os.walk(dir_i):
fpath = dirpath.replace(dir_i, '')
for f in files:
# 过滤掉不需要压缩的文件
if ignore and is_child_in_dir(os.path.join(dirpath, f), ignore):
continue
if os.path.join(dirpath, f) != file_o:
zip_obj.write(os.path.join(dirpath, f), os.path.join(fpath, f))
for f in dirs:
# 过滤掉不需要压缩的文件夹
if ignore and is_child_in_dir(os.path.join(dirpath, f), ignore):
continue
zip_obj.write(os.path.join(dirpath, f), os.apth.join(fpath,f))
zip_obj.close()