Pythonでzip圧縮・解凍する方法!zipfileモジュール初心者向け解説
先生と生徒の会話形式で理解しよう
生徒
「先生、複数のファイルをまとめて圧縮したり解凍したりしたいです。」
先生
「それならPythonのzipfileモジュールを使うと簡単にできます。圧縮ファイルを作ったり、開いたりするための便利な機能が揃っています。」
生徒
「zipfileモジュールって難しそうですが、初心者でも使えますか?」
先生
「はい、基本的な使い方を覚えれば簡単です。ファイルを圧縮する作業は、複数の紙を一つの封筒にまとめるイメージです。」
生徒
「なるほど!では具体的に教えてください。」
先生
「それでは、順を追って説明していきます。」
1. zipfileモジュールとは?
Pythonには標準でzipfileモジュールが用意されており、ZIP形式の圧縮・解凍を簡単に行えます。ZIPファイルは複数のファイルやフォルダをまとめて圧縮できる形式で、パソコン内の整理やメール送信に便利です。
2. ZIPファイルを作る(圧縮する)
ファイルを圧縮するときは、zipfile.ZipFileクラスを使います。新しいZIPファイルを作る場合はモードを'w'にします。
import zipfile
with zipfile.ZipFile("sample.zip", "w") as myzip:
myzip.write("file1.txt")
myzip.write("file2.txt")
ポイント:
ZipFile("sample.zip", "w")で新しいZIPファイルを作成write()で圧縮したいファイルを追加- 複数ファイルを一度にまとめて圧縮できる
3. ZIPファイルを開く(解凍する)
ZIPファイルを解凍する場合は、モードを'r'にします。extractall()で中身を全て展開できます。
import zipfile
with zipfile.ZipFile("sample.zip", "r") as myzip:
myzip.extractall("extracted_files")
ポイント:
extractall()で指定フォルダに解凍- 解凍先フォルダが存在しない場合は、自動で作ると便利
- 特定のファイルだけを解凍することも可能です
4. ZIPファイル内の一覧を確認する
圧縮ファイルの中身を確認したいときはnamelist()を使います。
import zipfile
with zipfile.ZipFile("sample.zip", "r") as myzip:
print("ZIPファイル内の一覧:", myzip.namelist())
ZIPファイル内の一覧: ['file1.txt', 'file2.txt']
5. 圧縮時にファイル名を変更する
圧縮時にZIP内でのファイル名を変えたい場合は、arcnameパラメータを使います。
import zipfile
with zipfile.ZipFile("sample.zip", "w") as myzip:
myzip.write("file1.txt", arcname="new_name.txt")
ポイント:
- 圧縮後のZIP内の名前を自由に設定可能
- 整理やフォルダ構造を維持したいときに便利
6. 実用例:複数ファイルをまとめて圧縮
import zipfile
import os
files_to_zip = ["file1.txt", "file2.txt", "file3.txt"]
with zipfile.ZipFile("archive.zip", "w") as myzip:
for file in files_to_zip:
if os.path.exists(file):
myzip.write(file)
else:
print(file, "が見つかりません")
file1.txt が見つかりません
ポイント:
- 存在しないファイルをチェックしてエラー回避
- 大量のファイルを一括圧縮する際に便利
7. 注意点
- zipfileモジュールはZIP形式専用です。他の圧縮形式は対応していません
- 大きなファイルを圧縮する場合はメモリ使用量に注意
- パスワード付きZIPはPython標準では対応が限定的なので、別途ライブラリが必要