PythonでディレクトリをZIPに圧縮する方法
Python
では、ディレクトリをZIPファイルとして圧縮するために主に2つの方法があります。1つはshutil
モジュールを使った簡単な方法、もう1つはzipfile
モジュールを使ってより詳細な圧縮操作を行う方法です。
shutil.make_archive()
による簡単な圧縮
Python
標準ライブラリであるshutil
を使うと、ディレクトリ全体を簡単にZIPファイルに圧縮できます。以下のコードで指定ディレクトリを圧縮します。
import shutil
shutil.make_archive('output_filename', 'zip', 'dir_name')
この方法は簡潔で、圧縮だけを行う場合に最適です。
zipfile
を使ったカスタマイズ圧縮
zipfile
モジュールを使用することで、特定のファイルやサブディレクトリを選んで圧縮するなど、より柔軟な操作が可能です。次のコードは、指定したディレクトリ内のすべてのファイルとフォルダを再帰的に圧縮します。
import zipfile
import os
def zipdir(path, ziph):
for root, dirs, files in os.walk(path):
for file in files:
ziph.write(os.path.join(root, file),
os.path.relpath(os.path.join(root, file), path))
with zipfile.ZipFile('output.zip', 'w', zipfile.ZIP_DEFLATED) as zipf:
zipdir('directory_to_zip', zipf)
このコードは、ディレクトリ構造を保ちながらすべてのファイルをZIPファイルに追加します。
まとめ
簡単にディレクトリ全体をZIPファイルにする場合は、shutil.make_archive()
が便利です。一方で、圧縮の細かいカスタマイズが必要な場合は、zipfile
モジュールを使って詳細な制御を行うことができます。用途に応じて、これらの方法を使い分けましょう。