Compress Folder to Zip File

  • Share this:

Code introduction


This function compresses a specified folder and all its contents into a single zip file.


Technology Stack : os, zipfile, json, csv, shutil, sys, datetime

Code Type : Compress Folder

Code Difficulty : Intermediate


                
                    
def zip_file(input_folder, output_file):
    import os
    import zipfile
    import json
    import csv
    import shutil
    import sys
    import datetime

    # Create a zipfile
    with zipfile.ZipFile(output_file, 'w') as zipf:
        # Walk through the input folder
        for root, dirs, files in os.walk(input_folder):
            for file in files:
                file_path = os.path.join(root, file)
                # Add the file to the zipfile
                zipf.write(file_path, os.path.relpath(file_path, input_folder))

    # Write a JSON file with metadata
    metadata = {
        "type": "Compress Folder",
        "hard": "中级",
        "explain": "该函数将指定文件夹及其所有内容压缩成一个zip文件。",
        "tench": "os, zipfile, json, csv, shutil, sys, datetime",
        "explain_en": "This function compresses a specified folder and all its contents into a single zip file.",
        "tench_en": "os, zipfile, json, csv, shutil, sys, datetime"
    }
    with open(os.path.join(os.path.dirname(output_file), 'metadata.json'), 'w') as metadata_file:
        json.dump(metadata, metadata_file, ensure_ascii=False, indent=4)

    print(f"Folder '{input_folder}' has been compressed into '{output_file}' with metadata.")