カテゴリ: Python 更新日: 2026/02/19

Pythonでzip圧縮・解凍する方法を徹底解説!初心者でもわかるzipfileモジュールの使い方

Pythonでzip圧縮・解凍する方法(zipfileモジュールの基本)
Pythonでzip圧縮・解凍する方法(zipfileモジュールの基本)

先生と生徒の会話形式で理解しよう

生徒

「パソコンにあるフォルダやファイルをPythonでまとめて圧縮したり、逆に解凍したりすることってできますか?」

先生

「もちろんできますよ。Pythonにはzipfileというモジュールがあって、それを使えばzipファイルを簡単に扱えます。」

生徒

「初心者でも使いこなせますか?操作が難しそうに感じます…」

先生

「大丈夫。順番に丁寧に説明するので、パソコン初心者の方でも安心してください。では、Pythonでzipファイルを扱う基本から見ていきましょう。」

1. zipファイルとは?まずは意味を知ろう

1. zipファイルとは?まずは意味を知ろう
1. zipファイルとは?まずは意味を知ろう

zip(ジップ)ファイルとは、複数のファイルやフォルダを一つにまとめて、データ容量を小さく「圧縮(あっしゅく)」したファイルのことです。ファイル名の末尾に「.zip」という拡張子がついているのが特徴です。

例えば、旅行で撮った100枚の写真を友だちに送る場面を想像してみてください。1枚ずつバラバラに送ると手間がかかり、受け取る方も大変ですよね。そんな時、zip形式にまとめれば「1つの箱(ファイル)」としてスッキリ送ることができ、さらに全体のサイズも軽くなるため、送信時間の短縮にもつながります。

身近な例えでいうと…
「布団圧縮袋」をイメージすると分かりやすいです。かさばる布団を袋に入れて空気を抜く(圧縮する)と、コンパクトになって収納しやすくなります。使うときは袋を開けて空気を入れる(解凍する)だけで元通りになりますよね。zipファイルもこれと同じ仕組みです。

日常の仕事やプライベートでも、以下のようなシーンでよく使われています:

  • 大量の書類を1つにまとめてメールで送る
  • Webサイトから複数の資料をまとめてダウンロードする
  • パソコンの容量を節約するために、あまり使わないデータを小さく保存する

Pythonを使えば、この「圧縮」や「解凍」という作業を、マウスを使わずにプログラムで自動化できるようになります。次の章から、その具体的な方法を学んでいきましょう。

2. Pythonでzipファイルを扱うには?zipfileモジュールの基本

2. Pythonでzipファイルを扱うには?zipfileモジュールの基本
2. Pythonでzipファイルを扱うには?zipfileモジュールの基本

Pythonには、zipファイルを扱うための「zipfileモジュール」が標準で用意されています。標準(ひょうじゅん)とは、特別な準備やインストールをしなくても最初から使える機能のことです。

まずは簡単なサンプルで、「ファイルを圧縮する」方法を見てみましょう。

3. Pythonでファイルをzip圧縮する方法

3. Pythonでファイルをzip圧縮する方法
3. Pythonでファイルをzip圧縮する方法

以下のコードでは、"example.txt"というファイルを"archive.zip"という名前で圧縮しています。


import zipfile

# 圧縮したいファイルとzipファイルの名前を指定
with zipfile.ZipFile('archive.zip', 'w') as zipf:
    zipf.write('example.txt')

write()は、zipファイルの中にファイルを追加する命令です。'w'は「新しく作るモード」です。

4. フォルダごとzip圧縮する方法(再帰的に圧縮)

4. フォルダごとzip圧縮する方法(再帰的に圧縮)
4. フォルダごとzip圧縮する方法(再帰的に圧縮)

フォルダの中のすべてのファイルをまとめて圧縮するには、Pythonのosモジュールを組み合わせて使います。


import zipfile
import os

folder_path = 'my_folder'
zip_path = 'my_folder.zip'

with zipfile.ZipFile(zip_path, 'w') as zipf:
    for foldername, subfolders, filenames in os.walk(folder_path):
        for filename in filenames:
            filepath = os.path.join(foldername, filename)
            zipf.write(filepath)

os.walk()は、フォルダの中をすべて調べる関数です。これを使えば、サブフォルダ(フォルダの中のフォルダ)も含めてまとめて圧縮できます。

5. Pythonでzipファイルを解凍する方法

5. Pythonでzipファイルを解凍する方法
5. Pythonでzipファイルを解凍する方法

今度は、逆にzipファイルを「解凍(かいとう)」する方法を紹介します。解凍とは、zipファイルを元の状態に戻すことです。


import zipfile

with zipfile.ZipFile('archive.zip', 'r') as zipf:
    zipf.extractall('output_folder')

extractall()は、zipファイルの中身をすべて取り出してくれます。'output_folder'という名前のフォルダに解凍されます。

6. zipfileモジュールのモード一覧と注意点

6. zipfileモジュールのモード一覧と注意点
6. zipfileモジュールのモード一覧と注意点

zipfile.ZipFile()では、以下のようなモードを指定できます。

  • 'r':読み込み専用(解凍に使う)
  • 'w':書き込み専用(新規作成、上書きされる)
  • 'a':追記(すでにあるzipファイルに追加)

zipファイルが存在する状態で'w'モードを使うと、中身が上書きされて消えてしまうので注意しましょう。

7. zip圧縮・解凍の実行結果例

7. zip圧縮・解凍の実行結果例
7. zip圧縮・解凍の実行結果例

次のような出力結果が表示されることはありませんが、圧縮や解凍が成功すればフォルダ内にzipファイルや解凍されたファイルが作られているはずです。ターミナルやコマンドプロンプトで確認してみてください。


    archive.zip(圧縮ファイル)が作成されました。
    output_folder(解凍先フォルダ)が作成されました。

8. よくあるエラーと解決法

8. よくあるエラーと解決法
8. よくあるエラーと解決法

パソコン初心者の方でも安心できるよう、よくあるエラーとその対処法を紹介します。

  • ファイルが見つからない:
    指定したファイル名が間違っている場合に発生します。ファイルの場所と名前を正しく書きましょう。
  • PermissionError(パーミッションエラー):
    ファイルやフォルダへのアクセス権がないときに出ます。ファイルを開いたままにしていないか確認してください。
  • UnicodeEncodeError:
    ファイル名に日本語が含まれていると、エラーになることがあります。なるべく半角英数字を使いましょう。

9. 実用例:写真をまとめて圧縮してメール送信

9. 実用例:写真をまとめて圧縮してメール送信
9. 実用例:写真をまとめて圧縮してメール送信

たとえば、スマホで撮った写真をパソコンに移して、10枚を一つのzipファイルにまとめてメールで送るときに便利です。

以下のようなイメージです。


import zipfile

with zipfile.ZipFile('photos.zip', 'w') as zipf:
    zipf.write('photo1.jpg')
    zipf.write('photo2.jpg')
    zipf.write('photo3.jpg')

このように、Pythonを使えば誰でも簡単にzip圧縮や解凍ができます。難しい操作は不要です。

まとめ

まとめ
まとめ

Pythonでzip圧縮や解凍を扱う作業は、初心者の方が想像するほど複雑ではなく、むしろ日常的に役立つ便利な操作として多くの場面で活用できます。特に、写真や書類を整理したり、外部へ送ったり、複数のファイルをひとつにまとめて保管したりする場合には、zip形式がとても有効です。Pythonの標準機能であるzipfileモジュールを使えば、追加インストールをする必要もなく、だれでもすぐに実践できるという安心感があります。プログラム初心者の方でも、基本的な文章の読み書きとフォルダ操作さえ理解していれば、zip圧縮や解凍の仕組みを自然と身につけることができます。 さらに、zipfileモジュールが提供する読み込み専用のモード、書き込み専用のモード、追記モードといった操作を理解しておくことで、実際の作業中にどのような状態でファイルを扱っているのかが明確になり、思わぬ上書きやデータ消失を避けることにも繋がります。また、フォルダ全体を再帰的に探索して圧縮する手法を覚えることで、写真や文書が大量に含まれた大きなフォルダも簡単にまとめることができます。こうした一連の手順を理解すると、単純な圧縮だけではなく、複数のフォルダを段階的に整理したり、用途ごとにまとめたzipファイルを自動生成したりといった応用にも活かせます。 とくに、Pythonに慣れていない方がつまずきやすい部分として、ファイルの場所や名前の間違い、アクセス権が不足している状態での操作、日本語名を含むファイルによる文字コードの問題などが挙げられます。しかし、それぞれの問題は一度経験すればすぐに理解できる種類のものであり、慌てず一つずつ確認していけば必ず解決できます。逆に、こうしたトラブルを体験することで、ファイルシステムや文字コード、権限といったコンピュータの基本的な仕組みを自然に学べるという利点もあります。 また、仕事や趣味の場面でも、圧縮作業はさまざまな用途に応用できます。たとえば、撮影した写真を整理してクラウドに保存する、学校行事の資料をまとめて配布する、受け取ったzipファイルを自動で分類して解凍する、といった一連の作業をPythonで自動化できれば、毎日の細かな作業の時間を大幅に短縮できます。このように、日常生活の中で頻繁に行う細かな操作を少しずつプログラムで置き換えていくことで、手作業の負担が減り、より多くの時間を本当に集中したい作業に割くことができます。 今回紹介したサンプルコードは、基本的な使い方を中心に丁寧に整理したものですが、それぞれの処理を応用して、自分自身のフォルダ構成や用途に合わせた便利なスクリプトを作ることもできます。たとえば、特定のファイル形式だけを圧縮する、一定日数以内に更新されたファイルだけをまとめる、といった工夫も可能です。こうした小さな自動化の積み重ねが、長期的には大きな効率化へと繋がります。 以下は、今回の内容を踏まえて少し手を加えたサンプルプログラムです。基本的な構造は同じですが、フォルダ全体を安全に圧縮するための簡単なチェックを追加してあります。


import zipfile
import os

target_folder = 'data_folder'
zip_name = 'data_folder.zip'

if os.path.exists(target_folder):
    with zipfile.ZipFile(zip_name, 'w') as zipf:
        for folder, subs, files in os.walk(target_folder):
            for file in files:
                full = os.path.join(folder, file)
                zipf.write(full)
else:
    print('指定フォルダが存在しません')

このように、Pythonの圧縮や解凍は、慣れてくると「日常の中で自然に使える便利な道具」として感じられるようになります。操作を覚えるにつれて、自分の作業環境をより扱いやすく整えられるだけでなく、効率的なデータ管理の考え方も自然に身についていきます。実際に手を動かしながら理解すれば、プログラムの動きもより明確にイメージできるようになり、少しずつ応用へと進んでいけます。ぜひ今回の内容を活かして、日々のファイル整理や管理をより快適に進めてみてください。

先生と生徒の振り返り会話

生徒:「今日はPythonでzipを扱う方法がよくわかりました。思っていたより簡単で、実際に動かしてみると理解しやすかったです。」

先生:「よかったですね。最初はむずかしそうに感じても、基本を押さえれば自然に覚えられるものですよ。」

生徒:「フォルダごとの圧縮や解凍もできるので、学校の資料をまとめるときにも使えそうです。」

先生:「その通りです。実際の生活に結びつけて使えると、プログラムの理解も深まりますよ。」

生徒:「ファイル名の間違いや権限エラーも注意ですね。次は、自分のパソコンの写真をまとめる自動化スクリプトを作ってみます。」

先生:「とても良い目標です。今回学んだ基礎を使えば、きっと作れますよ。」

この記事を読んだ人からの質問

この記事を読んだ人からの質問
この記事を読んだ人からの質問

プログラミング初心者からのよくある疑問/質問を解決します

Pythonでzipファイルを作るにはどんなモジュールを使えばいいですか?

Pythonでは標準ライブラリのzipfileモジュールを使ってzipファイルの作成ができます。追加のインストールは不要で、すぐに使えるのが特徴です。
コメント
コメント投稿は、ログインしてください

まだ口コミはありません。

関連記事:
カテゴリの一覧へ
新着記事
New1
Python
Pythonのカスタム例外を作成する方法を完全解説!初心者でもわかる独自のExceptionクラス入門
New2
PHP
PHP の型変換を完全ガイド!初心者でもわかる明示的変換・自動変換
New3
PHP
PHPの真偽値と条件判定をやさしく解説!初心者でもわかるempty・isset・is_nullの使い方
New4
PHP
PHP の file_get_contents() を使ってファイルを読み込む方法!初心者でもできる簡単なファイル操作
人気記事
No.1
Java&Spring記事人気No1
Python
Pythonのfinally文を徹底解説!例外発生時でも実行される処理の書き方と使い方
No.2
Java&Spring記事人気No2
Python
Pythonのクラスメソッドと静的メソッドの違いとは?初心者でも迷わない使い分けガイド
No.3
Java&Spring記事人気No3
Python
Pythonで辞書のネスト構造(入れ子辞書)を扱う方法 初心者向け完全ガイド
No.4
Java&Spring記事人気No4
Python
Pythonの書き方を基本から解説!はじめてのPythonプログラム
No.5
Java&Spring記事人気No5
Python
Pythonで文字列が数値か判定する方法!isdigit()・isnumeric()の違い
No.6
Java&Spring記事人気No6
PHP
初心者向けPHP の MySQL のデータを更新する方法(UPDATE 文)完全ガイド
No.7
Java&Spring記事人気No7
Python
Pythonのコンストラクタ(__init__)の使い方!初心者でもわかるオブジェクトの初期化
No.8
Java&Spring記事人気No8
PHP
PHP の変数とは?基本的な使い方とデータ型を徹底解説!