📌

【Python】手軽にファイル&フォルダを圧縮する方法

に公開

📄 概要(Zenn記事用)

本記事では、Pythonを使ってファイルやフォルダを圧縮(ZIP形式)する方法を紹介

・zipfileモジュールを使った基本的な圧縮方法
・複数ファイル・フォルダのまとめ方

業務での使用例

・エビデンスファイル(HTML, PNG, log)を定期的にZIP化して共有

サンプルコード

import os
import zipfile

def zip_folder_or_file(src_path, dest_dir):
    """
    src_path: 圧縮したいファイルまたはフォルダのパス
    dest_dir: 圧縮ファイルを保存するフォルダのパス
    """
    if not os.path.exists(src_path):
        raise FileNotFoundError(f"{src_path} が存在しません。")
    if not os.path.isdir(dest_dir):
        raise NotADirectoryError(f"{dest_dir} はディレクトリではありません。")

    base_name = os.path.basename(os.path.normpath(src_path))
    zip_path = os.path.join(dest_dir, base_name + ".zip")

    with zipfile.ZipFile(zip_path, 'w', zipfile.ZIP_DEFLATED) as zipf:
        if os.path.isdir(src_path):
            for root, dirs, files in os.walk(src_path):
                for file in files:
                    abs_path = os.path.join(root, file)
                    rel_path = os.path.relpath(abs_path, os.path.dirname(src_path))
                    zipf.write(abs_path, rel_path)
        else:
            zipf.write(src_path, base_name)
    return zip_path

# 使用例:
# A = "/path/to/target"
# B = "/path/to/destination"
# zip_folder_or_file(A, B)

Discussion