wonderbeyond
7/27/2017 - 8:30 AM

create zip file stream all in-memory

create zip file stream all in-memory

import io
from zipfile import ZipFile


def create_zip_inmemory(structs):
    with io.BytesIO() as buffer:
        with ZipFile(buffer, 'w') as zf:
            for filename, content in structs:
                zf.writestr(filename, content)
        buffer.seek(0)
        return buffer.read()


if __name__ == '__main__':
    import sys
    data = create_zip_inmemory([
        ('a.txt', 'hello'),
        ('b.txt', 'world'),
    ])
    try:
        open(sys.argv[1], 'wb').write(data)
    except IndexError:
        print('Usage: {0} <out-file>'.format(sys.argv[0]))