【Python】ファイルのZIP圧縮・解凍

この記事では、Python言語でファイルのZIP圧縮をする方法をソースコード付きで解説します。

ファイルのZIP圧縮

Python言語の標準ライブラリ・モジュール「zipfile」でファイルのZIP圧縮ができます。

書式

zip = zipfile.ZipFile(ZIPファイル名, モード, オプション)
zip.write(ZIP圧縮したいファイル名)
zip.close()
引数 説明
モード 書き込みモードは”w”、読み込みモードは”r”
オプション 「ZIP_STORED」ならファイルサイズ自体は非圧縮、「ZIP_DEFLATED」はファイルサイズも圧縮

サンプルプログラムのソースコードです。

サンプル1

# -*- coding: utf-8 -*-
import zipfile

# ZIP圧縮するファイルのリスト
filelist = ["test.jpg","test.png","test.txt"]

# ZIP圧縮の設定
zip1 = zipfile.ZipFile("test.zip", "w", zipfile.ZIP_STORED)

# ZIP圧縮
for i, filename in enumerate(filelist):
    zip1.write(filename)

zip1.close()

サンプル2

# -*- coding: utf-8 -*-
import zipfile

# ZIP圧縮するファイルのリスト
filelist = ["test.jpg","test.png","test.txt"]

# ZIP圧縮の設定
zip1 = zipfile.ZipFile("test.zip", "w", zipfile.ZIP_DEFLATED)

# ZIP圧縮
for i, filename in enumerate(filelist):
    zip1.write(filename)

zip1.close()

test.jpg, test.png, test.txtをまとめてZIP圧縮したファイル「test.zip」が生成されます。

ZIPファイルの解凍(展開)

zipファイルを解凍する場合、ZipFileオブジェクトの「extractallメソッド」を使います。

書式 zip.extractall(path, pwd=’password’)
path 解凍先のパス
psd パスワード(ある場合)

サンプルコード

パスワードなしの場合

with zipfile.ZipFile('test.zip') as zip:
    zip.extractall('ext', pwd='password')

ZIPファイルの解凍(特定のファイルのみ)

特定ファイルのみ解凍したい場合はextractメソッドを使います。

サンプルコード

with zipfile.ZipFile('test.zip') as zip:
    zip.extract('test.txt', 'ext', pwd='password')

フォルダ内の全てのzipファイルを解凍

Python標準モジュール「ZipFile」「glob」を使うことでフォルダ内の全てのZIPファイルを解凍できます。

# -*- coding: utf-8 -*-
import os
from glob import glob
from zipfile import ZipFile

zip_dir  = "./src"
ext_dir = "./ext"

files = glob(os.path.join(zip_dir, '*.zip'))
for file in files:
    with ZipFile(file) as zip:
        zip.extractall(ext_dir, psw='password')
詳細ページ
【Python】フォルダ内の全てのzipファイルを解凍
関連記事
1 Python入門 サンプル集

コメント

  1. 匿名 より:

    サンプル1
    【誤】ip1.write(filename)
    【正】zip1.write(filename)

    • 管理人 より:

      ※匿名様
      いつもコメントありがとうございます。
      誤記を修正いたしました。