20 lines
607 B
Python
20 lines
607 B
Python
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
|