PythonでZIPアーカイブ作成:ディレクトリ全体からカスタムファイル選択まで
PythonでZIPアーカイブ作成:ディレクトリ全体からカスタムファイル選択まで
Pythonでは、ディレクトリ全体を圧縮する場合も、特定のファイルを選択する場合も、ZIPやTARアーカイブの作成が簡単です。
ディレクトリ全体を一括でZIPするにはshutil.make_archiveを使用:
shutil.make_archive(output_filename, 'zip', dir_name)
細かい制御が必要な場合は、zipfile.ZipFileクラスで個別ファイルを指定:
ZipFile.write(filename)
ステップ1: 環境の準備
- 必要なモジュールをインポート:
from shutil import make_archive from zipfile import ZipFile from os import path import os
- ソースファイルの存在確認と絶対パス取得:
if path.exists("guru99.txt"): src = path.realpath("guru99.txt") - 必要に応じて既存ファイルをターゲット名にリネーム。
ステップ2: ディレクトリ全体をZIP化
フォルダ内のすべてをアーカイブする場合はmake_archiveを使用:
root_dir, _ = path.split(src)
make_archive("guru99_archive", "zip", root_dir)
これによりカレントワーキングディレクトリにguru99_archive.zipが作成されます。
ステップ3: 特定ファイルを新しいZIPに追加
細かい制御が必要な場合はZipFileクラスが最適:
with ZipFile("testguru99.zip", "w") as newzip:
newzip.write("guru99.txt")
newzip.write("guru99.txt.bak")
with文でブロック終了時にアーカイブが自動クローズされます。
ステップ4: 結果の確認
生成されたZIPファイルをOSのファイルエクスプローラーで開いて内容を確認。Windowsではダブルクリックで含まれるファイルの一覧が表示されます。
典型的なワークフローのスクリーンショット:







完全なコード(Python 3):
import os
from shutil import make_archive
from zipfile import ZipFile
from os import path
def main():
if path.exists("guru99.txt"):
# ソースファイルの絶対パス取得
src = path.realpath("guru99.txt")
# オプション: 既存ファイルをリネーム
os.rename("career.guru99.txt", "guru99.txt")
# ファイルを含むディレクトリ全体をアーカイブ
root_dir, _ = path.split(src)
make_archive("guru99_archive", "zip", root_dir)
# 選択したファイルのみで2つ目のZIPを作成
with ZipFile("testguru99.zip", "w") as newzip:
newzip.write("guru99.txt")
newzip.write("guru99.txt.bak")
if __name__ == "__main__":
main()
まとめ
- ディレクトリ全体をZIPするには
shutil.make_archive('name', 'zip', root_dir)を呼び出し - 特定ファイルを追加するには
withブロック内でZipFile.write(filename)を使用
Python
- PythonファイルI/O:ファイル操作、読み書き、管理のマスター
- Python strip()メソッド完全ガイド:実践例付き
- Python str.count()マスター:文字と部分文字列のカウント実例集
- Python round()関数を実例で徹底解説
- Python map()関数をマスター:構文、例、ベストプラクティス
- Python timeit():実行時間測定の実例付きガイド
- Python collections.Counter:効率的なカウント、更新、演算操作
- Python list.count() 完全ガイド:実践例付きで徹底解説
- Python list.index():要素の位置を検索する実践ガイド
- Python C拡張プログラミング:高速ネイティブモジュールの構築
- Java BufferedReader でファイル読み込み:実践ガイドと例