Python でファイルを解凍する

Azaz Farooq 2023年10月10日
  1. Python の extractall() メソッドを使って作業ディレクトリにファイルを解凍する
  2. Python で extractall() メソッドを用いてファイルを別のディレクトリに解凍する
  3. 条件に基づく extractall() メソッドを用いた Python でのファイルの解凍
  4. unpack_archive() メソッドを用いて Python でファイルを解凍する
Python でファイルを解凍する

ZIP ファイルはアーカイブファイル形式であり、ロスレスなデータ圧縮に役立ちます。1つの ZIP ファイルには複数の圧縮ファイルを含めることができます。ZIP ファイルでは、複数のファイルは単一のファイルよりも高速に転送され、データのサイズを小さくすることができます。Python に組み込まれた ZipFile モジュールは Zip ファイルを解凍するために使用することができます。

この記事では Python で圧縮ファイルや Zip ファイルを抽出する方法について説明します。

Python の extractall() メソッドを使って作業ディレクトリにファイルを解凍する

まず、以下のコマンドを使って Python の組み込みの zipfile モジュールをインポートしてみよう。

from zipfile import ZipFile

完全なサンプルコードは以下の通りです。

from zipfile import ZipFile

test_file_name = "my_files.zip"

with ZipFile(test_file_name, "r") as zip:
    zip.printdir()
    zip.extractall()

ZipFile 関数の r はファイルの読み込み操作を表し、extractall() 関数は zip ファイルの内容をカレントの作業ディレクトリに展開します。

出力:

 File Name         Modified                  Size
file1.txt          2020-11-09 23:03:06        0
file2.txt          2020-11-09 23:03:18        0

Python で extractall() メソッドを用いてファイルを別のディレクトリに解凍する

このメソッドは zip ファイルを別のディレクトリに抽出します。主な違いは、extractall() メソッドの引数に保存先のディレクトリを渡すことです。

完全なサンプルコードは以下の通りです。

from zipfile import ZipFile

with ZipFile("my_files.zip", "r") as zip:
    zip.extractall("temp")
    print("File is unzipped in temp folder")

現在の作業ディレクトリに新しいディレクトリ temp が作成され、すべての zip ファイルがそこに抽出されます。

出力:

Files are unzipped in temp folder

条件に基づく extractall() メソッドを用いた Python でのファイルの解凍

この方法は、zip ファイル内に大量のファイルがあり、特定の拡張子を持つファイルを抽出する必要がある場合に便利です。例えば、.txt ファイルを zip ファイルから抽出します。

完全なサンプルコードは以下の通りです。

from zipfile import ZipFile

with ZipFile("my_files.zip", "r") as obj_zip:
    FileNames = obj_zip.namelist()
    for fileName in FileNames:
        if fileName.endswith(".txt"):
            zipObj.extract(fileName, "temp_txt")

namelist() 関数は、zip ファイルに含まれるすべてのファイルの名前を返します。

endswith() メソッドは、ファイル名の末尾が .txt で終わるかどうかをチェックします。もしそうであれば、extract() 関数は .txt ファイルをカレントディレクトリの temp_txt フォルダに展開します。

unpack_archive() メソッドを用いて Python でファイルを解凍する

このメソッドは Python に組み込まれた shutil モジュールを利用します。これはアーカイブされたファイルのすべての形式を抽出します。

完全なサンプルコードは以下の通りです。

import shutil

shutil.unpack_archive("test.zip")

抽出されたファイルは、このスクリプトを実行している現在の作業ディレクトリにあります。