Python
 Computer >> コンピューター >  >> プログラミング >> Python

PythonでディレクトリをZIPアーカイブに圧縮する方法

Pythonでディレクトリ全体をZIPアーカイブとしてまとめるには、標準ライブラリのzipfileモジュールを使用します。os.walk()を使ってディレクトリツリーを再帰的に走査し、その中にあるすべてのファイルをアーカイブに追加していきます。

基本的な実装例

import os
import zipfile

def zipdir(path, ziph):
    # ziph は zipfile のハンドル(ファイルオブジェクト)
    for root, dirs, files in os.walk(path):
        for file in files:
            ziph.write(os.path.join(root, file))

zipf = zipfile.ZipFile('Zipped_file.zip', 'w', zipfile.ZIP_DEFLATED)
zipdir('./my_folder', zipf)
zipf.close()

コードの解説

  • os.walk(path): 指定したパス以下のディレクトリを再帰的に走査し、各階層ごとに「ルートパス・サブディレクトリ一覧・ファイル名一覧」を順番に返します。
  • zipfile.ZipFile('Zipped_file.zip', 'w', zipfile.ZIP_DEFLATED): 書き込みモード('w')で新しいZIPファイルを作成します。第3引数に ZIP_DEFLATED を指定すると、データが圧縮されて保存されます。
  • ziph.write(...): 見つかったファイルを1つずつアーカイブに書き込みます。

上記のコードを実行すると、my_folder 内のすべてのファイルが「Zipped_file.zip」という1つのファイルに圧縮され、カレントディレクトリに保存されます。

with文を使ったより安全な書き方

Pythonでは、with 文を使うことでファイルのクローズ忘れを防ぎ、より安全に処理できます。

import os
import zipfile

with zipfile.ZipFile('Zipped_file.zip', 'w', zipfile.ZIP_DEFLATED) as zipf:
    for root, dirs, files in os.walk('./my_folder'):
        for file in files:
            zipf.write(os.path.join(root, file))

この方法であれば、処理終了時に自動的にアーカイブが閉じられるため、例外が発生した場合でもリソースの解放漏れを心配する必要がありません。

  1. PythonのMatplotlibでヒストグラムを作成する方法をわかりやすく解説

    Matplotlibは、データ可視化のために広く使われている人気のPythonライブラリです。データの可視化は非常に重要なステップです。数値を一つずつ確認したり複雑な計算を行ったりしなくても、データ全体の傾向や特徴を直感的に把握できるようになるからです。また、定量的な洞察を効果的に伝える手段としても優れています。MatplotlibとはMatplotlibは、データをもとに2次元のプロット(グラフ)を作成するためのライブラリです。オブジェクト指向のAPIを備えており、作成したグラフをPythonアプリケーションに組み込むことも簡単に行えます。IPythonシェル、Jupyter Noteboo

  2. Pythonとtkinterでストップウォッチを作成する方法【サンプルコード付き】

    ストップウォッチは、ある出来事から次の出来事までの時間間隔を測定するための道具で、一般的に数秒〜数分程度の計測に使用されます。スポーツのタイム計測をはじめ、産業現場で熱流量や電流の変化を測るなど、幅広い場面で活用されています。 Pythonでは標準ライブラリのtkinterを使えば、GUIを備えたストップウォッチを簡単に自作できます。本記事で紹介するのは、スタート(Start)・ストップ(Stop)・リセット(Reset)の3つの操作ボタンを備えたウィンドウアプリケーションです。 ポイントは「after()」メソッド このプログラムの核となるのが、tkinterのウィジェットが持つafter