Compress Directory into Zip File

  • Share this:

Code introduction


This function takes a directory and a filename as arguments, and compresses all files in the directory into a single zip file.


Technology Stack : os, zipfile, json, shutil, datetime, stat, tempfile, contextlib

Code Type : File compression

Code Difficulty : Intermediate


                
                    
def zip_file(directory, filename):
    import os
    import zipfile
    import json
    import shutil
    import datetime
    import stat
    import tempfile
    import contextlib

    def get_files_from_directory(directory):
        for root, dirs, files in os.walk(directory):
            for file in files:
                yield os.path.join(root, file)

    with contextlib.closing(zipfile.ZipFile(filename, 'w', zipfile.ZIP_DEFLATED)) as zipf:
        for file_path in get_files_from_directory(directory):
            zipf.write(file_path, os.path.relpath(file_path, directory))

    return filename