Spaces:
Runtime error
Runtime error
import os | |
import io | |
import contextlib | |
import tempfile | |
import shutil | |
import errno | |
import zipfile | |
def tempdir(): | |
"""Create a temporary directory in a context manager.""" | |
td = tempfile.mkdtemp() | |
try: | |
yield td | |
finally: | |
shutil.rmtree(td) | |
def mkdir_p(*args, **kwargs): | |
"""Like `mkdir`, but does not raise an exception if the | |
directory already exists. | |
""" | |
try: | |
return os.mkdir(*args, **kwargs) | |
except OSError as exc: | |
if exc.errno != errno.EEXIST: | |
raise | |
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 | |