def zip_ya(start_dir):start_dir = start_dir # 要压缩的文件夹路径file_news = start_dir + '.zip' # 压缩后文件夹的名字z = zipfile.ZipFile(file_news, 'w', zipfile.ZIP_DEFLATED)for dir_path, dir_names, file_names in os.walk(start_dir):f_path = dir_path.replace(start_dir, '') # 这一句很重要,不replace的话,就从根目录开始复制f_path = f_path and f_path + os.sep or '' # 实现当前文件夹以及包含的所有文件的压缩for filename in file_names:z.write(os.path.join(dir_path, filename), f_path + filename)z.close()return file_news
PS: 若递归扫描所有文件夹过程中有文件夹里不存在文件, 该文件夹将被忽略