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

Pythonでフォルダ内のファイルをZIPファイルに圧縮・追加する方法

PythonでディレクトリをZIPアーカイブにまとめる基本の方法

Pythonでは、標準ライブラリの zipfile モジュールを使うことで、フォルダ内のファイルをまとめてZIPアーカイブにできます。ポイントは、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()

コードの解説

上記のコードを実行すると、my_folder 内のすべてのファイルが「Zipped_file.zip」に圧縮され、カレントディレクトリ(スクリプトを実行した場所)に保存されます。

  • zipfile.ZipFile('Zipped_file.zip', 'w', ...):新しいZIPファイルを作成します。モード 'w' は書き込み用です。
  • zipfile.ZIP_DEFLATED:データを実際に圧縮して保存する方式を指定しています。
  • os.walk(path):指定したパス以下のサブフォルダとファイルを再帰的にたどります。
  • ziph.write(...):見つかったファイルを1つずつアーカイブに追加します。

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

ZIPファイルの操作には with 文を使うのがおすすめです。処理が終わると自動的にファイルがクローズされるため、close() の呼び忘れによるデータ破損を防げます。

import os
import zipfile

def zipdir(path, ziph):
    for root, dirs, files in os.walk(path):
        for file in files:
            ziph.write(os.path.join(root, file))

with zipfile.ZipFile('Zipped_file.zip', 'w', zipfile.ZIP_DEFLATED) as zipf:
    zipdir('./my_folder', zipf)

このように zipfileos.walk を組み合わせれば、階層構造を持つフォルダでも簡単に一括圧縮できます。バックアップやログファイルの整理など、日常的なタスクにぜひ活用してください。

  1. Macでファイルを圧縮(zip)する方法|解凍からパスワード保護まで徹底解説

    「お金はいくらあっても足りず、スリムさも同様」という言葉がありますが、ストレージ容量についても同じことが言えるかもしれません。Macの空き容量を節約する方法のひとつが、ファイルやフォルダを圧縮(zip)してサイズを小さくすることです。また、誰かにファイルを送りたい場合にも、あらかじめ圧縮しておくと便利です。 この記事では、Macでファイルをzip形式に圧縮する方法、圧縮ファイルを解凍する方法、さらにzipファイルにパスワードを設定して、意図した相手だけが閲覧できるようにする方法までをわかりやすく解説します。 Macでファイルをzip圧縮する方法 画像、動画、音楽ファイル、ドキュメントなど、通常

  2. Windows 10のPowerShellでファイルを圧縮・解凍する方法【コマンド実例付き】

    ZIP機能を使うと、ファイルとその関連設定を1つのファイルにまとめて、容量を小さく圧縮できます。こうして作成したZIPファイルは、メールやその他のファイル共有サービスを通じて、簡単に他の人へ送信できるのが大きなメリットです。 ZIP圧縮といえば、WinRARや7-Zipといった専用ソフトを使うのが一般的ですが、実はWindowsに標準搭載されているPowerShellでも、追加ソフトなしでファイルの圧縮・解凍が可能です。この記事では、その具体的な手順をわかりやすく解説します。 関連記事:WindowsとMacでファイルを圧縮する方法 PowerShellでファイルをZIP圧縮する方法 まずは、