カテゴリ: Python 更新日: 2025/12/18

Pythonでzip圧縮・解凍する方法!zipfileモジュール初心者向け解説

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

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

生徒

「先生、複数のファイルをまとめて圧縮したり解凍したりしたいです。」

先生

「それならPythonのzipfileモジュールを使うと簡単にできます。圧縮ファイルを作ったり、開いたりするための便利な機能が揃っています。」

生徒

「zipfileモジュールって難しそうですが、初心者でも使えますか?」

先生

「はい、基本的な使い方を覚えれば簡単です。ファイルを圧縮する作業は、複数の紙を一つの封筒にまとめるイメージです。」

生徒

「なるほど!では具体的に教えてください。」

先生

「それでは、順を追って説明していきます。」

1. zipfileモジュールとは?

1. zipfileモジュールとは?
1. zipfileモジュールとは?

Pythonには標準でzipfileモジュールが用意されており、ZIP形式の圧縮・解凍を簡単に行えます。ZIPファイルは複数のファイルやフォルダをまとめて圧縮できる形式で、パソコン内の整理やメール送信に便利です。

2. ZIPファイルを作る(圧縮する)

2. 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ファイルを開く(解凍する)

3. ZIPファイルを開く(解凍する)
3. ZIPファイルを開く(解凍する)

ZIPファイルを解凍する場合は、モードを'r'にします。extractall()で中身を全て展開できます。


import zipfile

with zipfile.ZipFile("sample.zip", "r") as myzip:
    myzip.extractall("extracted_files")

ポイント:

  • extractall()で指定フォルダに解凍
  • 解凍先フォルダが存在しない場合は、自動で作ると便利
  • 特定のファイルだけを解凍することも可能です

4. ZIPファイル内の一覧を確認する

4. ZIPファイル内の一覧を確認する
4. ZIPファイル内の一覧を確認する

圧縮ファイルの中身を確認したいときはnamelist()を使います。


import zipfile

with zipfile.ZipFile("sample.zip", "r") as myzip:
    print("ZIPファイル内の一覧:", myzip.namelist())

ZIPファイル内の一覧: ['file1.txt', 'file2.txt']

5. 圧縮時にファイル名を変更する

5. 圧縮時にファイル名を変更する
5. 圧縮時にファイル名を変更する

圧縮時にZIP内でのファイル名を変えたい場合は、arcnameパラメータを使います。


import zipfile

with zipfile.ZipFile("sample.zip", "w") as myzip:
    myzip.write("file1.txt", arcname="new_name.txt")

ポイント:

  • 圧縮後のZIP内の名前を自由に設定可能
  • 整理やフォルダ構造を維持したいときに便利

6. 実用例:複数ファイルをまとめて圧縮

6. 実用例:複数ファイルをまとめて圧縮
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. 注意点

7. 注意点
7. 注意点
  • zipfileモジュールはZIP形式専用です。他の圧縮形式は対応していません
  • 大きなファイルを圧縮する場合はメモリ使用量に注意
  • パスワード付きZIPはPython標準では対応が限定的なので、別途ライブラリが必要
カテゴリの一覧へ
新着記事
New1
Django
Djangoプロジェクトのディレクトリ構造を完全解説!初心者でも迷わないフォルダの見方
New2
Flask
Flask×Flask-SocketIOでチャットアプリを作る流れを初心者向けにやさしく解説
New3
Flask
Flaskアプリの作り方を基礎から学ぼう!初心者が覚えるべき開発の流れとは?
New4
Flask
Flask-WTFでファイルアップロードフォームを完全ガイド!初心者でもわかる画像やPDFのアップロード方法
人気記事
No.1
Java&Spring記事人気No1
Django
Django環境構築の全手順を完全解説!初心者でも迷わないPython・Djangoセットアップガイド
No.2
Java&Spring記事人気No2
Flask
Flask-Loginでユーザー認証を完全ガイド!初心者でもわかるログイン処理の作り方
No.3
Java&Spring記事人気No3
Python
Pythonの文字列を1文字ずつ処理する方法!for文やlist化の活用例
No.4
Java&Spring記事人気No4
Python
PythonでHello Worldを表示するには?初心者向けに最初の1行を実行してみよう
No.5
Java&Spring記事人気No5
Python
Pythonで定数を定義する方法!変更されない変数の書き方と命名ルールを初心者向けに解説
No.6
Java&Spring記事人気No6
Python
Pythonでリストを文字列に変換する方法を完全ガイド!初心者でもわかるjoinの使い方
No.7
Java&Spring記事人気No7
Python
Pythonのmatch文(パターンマッチング)とは?switch文の代替としての使い方をやさしく解説
No.8
Java&Spring記事人気No8
Flask
FlaskアプリをNginx + Gunicornで本番運用する方法!初心者でもわかるデプロイ構成の基本