You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
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
|