📌
【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