import os from tempfile import TemporaryDirectory, mktemp from zipfile import ZipFile class Zip: def __init__(self): self.dir = TemporaryDirectory() @property def dirname(self): return self.dir.name def pack(self): tmp_zip = mktemp(suffix='.zip') with ZipFile(tmp_zip, 'w') as zip_object: for folder_name, sub_folders, file_names in os.walk(self.dir.name): for filename in file_names: file_path = os.path.join(folder_name, filename) rel_file_path = os.path.relpath(file_path, self.dir.name) zip_object.write(file_path, rel_file_path) return tmp_zip