PythonでZIPファイルを簡単操作!zipfileモジュール徹底解説
この記事では、Pythonの標準ライブラリ**zipfileモジュール**を使って、ZIPファイルの圧縮と解凍を行う方法について解説します。ファイルのバックアップ、複数のファイルをまとめて配布、データのアーカイブなど、ZIPファイルの操作は多岐にわたる場面で必要とされます。zipfileを使えば、これらの操作をPythonスクリプトから簡単に行えます。
ZIPファイルとは?
ZIPファイルは、一つまたは複数のファイルやディレクトリをまとめて圧縮し、一つのファイルとして保存するための一般的なアーカイブ形式です。ファイルをまとめることで管理が容易になり、圧縮することでディスクスペースを節約したり、ネットワーク経由での転送時間を短縮したりできます。
なぜZIPファイルを操作するのか?
-
データ配布: 複数の関連ファイルをまとめて、単一のZIPファイルとして配布する際に便利です。
-
バックアップ: 重要なファイルやディレクトリを定期的にZIP圧縮して保存することで、データの破損や紛失に備えます。
-
ストレージ効率: ファイルを圧縮することで、ストレージ容量を節約できます。
-
転送速度: 圧縮されたファイルを転送することで、特にインターネット経由でのデータ送信時間を短縮できます。
zipfileモジュールとは?
**zipfile**モジュールは、Pythonに標準で組み込まれているライブラリで、ZIPアーカイブの作成、読み込み、書き込み、解凍を行う機能を提供します。外部ライブラリをインストールする必要がなく、PythonだけでZIPファイルを扱うことができます。
zipfileの基本的な使い方
zipfileモジュールを使ってZIPファイルの圧縮と解凍を行う基本的な手順を説明します。
ファイルをZIP圧縮する(追加・新規作成)
zipfile.ZipFileクラスを'w' (書き込み) または 'a' (追加) モードで開き、write()メソッドでファイルを追加します。
import zipfile
import os
# 圧縮するファイルを作成
with open("file1.txt", "w") as f:
f.write("これはファイル1の内容です。")
with open("file2.txt", "w") as f:
f.write("これはファイル2の内容です。")
# ZIPファイルを作成し、ファイルを追加
with zipfile.ZipFile("my_archive.zip", 'w') as zf:
zf.write("file1.txt")
zf.write("file2.txt", arcname="subfolder/file2_in_zip.txt") # ZIP内のパスを指定
print("my_archive.zip が作成されました。")
# 作成したファイルを削除(任意)
os.remove("file1.txt")
os.remove("file2.txt")
このコードは、file1.txtとfile2.txtを作成し、それらをmy_archive.zipという名前のZIPファイルに圧縮する例です。arcname引数を使用すると、ZIPファイル内でのファイルのパスや名前を指定できます。
ZIPファイルを解凍する
zipfile.ZipFileクラスを'r' (読み込み) モードで開き、extractall()メソッドで全てのファイルを解凍するか、extract()メソッドで個別のファイルを解凍します。
import zipfile
import os
# 事前にZIPファイルが存在することを想定
# (上記の「ファイルをZIP圧縮する」で作成されたmy_archive.zipを使用)
# 解凍先のディレクトリ
extract_dir = "extracted_files"
os.makedirs(extract_dir, exist_ok=True) # ディレクトリが存在しない場合は作成
# ZIPファイルを解凍
with zipfile.ZipFile("my_archive.zip", 'r') as zf:
zf.extractall(extract_dir) # 全てのファイルを指定ディレクトリに解凍
print(f"my_archive.zip が {extract_dir} に解凍されました。")
# 解凍されたファイルを確認(任意)
print(os.listdir(extract_dir))
print(os.listdir(os.path.join(extract_dir, "subfolder")))
# ZIPファイルを削除(任意)
os.remove("my_archive.zip")
このコードは、my_archive.zipをextracted_filesディレクトリに解凍する例です。extractall()は全てのファイルを解凍し、extract()は特定のファイルのみを解凍できます。
ZIPファイルの内容を確認する
ZIPファイルを解凍する前に、その内容(含まれるファイル名)を確認したい場合があります。namelist()メソッドを使用すると、ZIPファイル内の全てのファイル名のリストを取得できます。
import zipfile
# 事前にZIPファイルが存在することを想定
with zipfile.ZipFile("my_archive.zip", 'r') as zf:
print("ZIPファイルに含まれるファイル:")
for name in zf.namelist():
print(f"- {name}")
まとめ
Pythonのzipfileモジュールは、ZIPファイルの圧縮、解凍、内容の確認といった操作を非常に簡単に行うための強力な標準ライブラリです。データのアーカイブ、配布、バックアップなど、様々なファイル操作の自動化に役立ちます。ぜひzipfileを活用して、Pythonスクリプトでのファイル管理を効率化してみてください!
■プロンプトだけでオリジナルアプリを開発・公開してみた!!
■AI時代の第一歩!「AI駆動開発コース」はじめました!
テックジム東京本校で先行開始。
■テックジム東京本校
「武田塾」のプログラミング版といえば「テックジム」。
講義動画なし、教科書なし。「進捗管理とコーチング」で効率学習。
より早く、より安く、しかも対面型のプログラミングスクールです。
<短期講習>5日で5万円の「Pythonミニキャンプ」開催中。
<月1開催>放送作家による映像ディレクター養成講座
<オンライン無料>ゼロから始めるPython爆速講座


