import io | |
import os | |
import zipfile | |
def dir_to_zipfile(root): | |
"""Construct an in-memory zip file for a directory.""" | |
buffer = io.BytesIO() | |
zip_file = zipfile.ZipFile(buffer, 'w') | |
for root, dirs, files in os.walk(root): | |
for path in dirs: | |
fs_path = os.path.join(root, path) | |
rel_path = os.path.relpath(fs_path, root) | |
zip_file.writestr(rel_path + '/', '') | |
for path in files: | |
fs_path = os.path.join(root, path) | |
rel_path = os.path.relpath(fs_path, root) | |
zip_file.write(fs_path, rel_path) | |
return zip_file | |