Pythonでフォルダ内のすべてのZIPファイルを解凍する方法

Python

前回の記事ではZIP化する方法を紹介しましたが

この記事では、Pythonを使って特定のフォルダ内にあるすべてのZIPファイルを自動的に解凍する方法について解説します。このスクリプトを使えば、一つ一つのZIPファイルを手動で解凍する手間が省け、効率的に作業を行うことができます。

使用するライブラリ

このプログラムでは以下のPythonの標準ライブラリを使用します。

  • os: ファイルやディレクトリの操作を行うためのライブラリです。
  • zipfile: ZIPファイルを扱うためのライブラリで、圧縮および解凍を行うことができます。

これらのライブラリはPythonに標準で含まれているため、別途インストールする必要はありません。

コードの説明

import os
import zipfile

## ディレクトリを指定する
directory_path = r'C:\Users\******'  # 解凍したいZIPファイルが含まれるディレクトリのパスを指定

def unzip_all_files_in_directory(directory):
    # ディレクトリ内のすべてのファイルとフォルダをリストアップ
    for item in os.listdir(directory):
        # アイテムのフルパスを取得
        item_path = os.path.join(directory, item)
        
        # アイテムがZIPファイルかどうかを確認
        if zipfile.is_zipfile(item_path):
            # ZIPファイルを解凍するためのパスを作成
            with zipfile.ZipFile(item_path, 'r') as zip_ref:
                # ZIPファイルを同じディレクトリに解凍
                zip_ref.extractall(directory)
                print(f'解凍しました: {item_path}')

# 解凍
unzip_all_files_in_directory(directory_path)

各部分の詳細説明

  1. ディレクトリパスの指定 directory_path には、解凍したいZIPファイルが含まれているディレクトリのパスを指定します。Windows環境では、パスの前に r を付けて「生文字列」として扱い、バックスラッシュ(\)がエスケープ文字として解釈されないようにします。
  2. ディレクトリ内のファイルをリストアップ os.listdir() を使用して、指定されたディレクトリ内にあるすべてのファイルやフォルダをリストアップします。各アイテムのフルパスを作成するために、os.path.join() を使用します。
  3. ZIPファイルかどうかを確認 zipfile.is_zipfile() メソッドを使って、各アイテムがZIPファイルかどうかを確認します。ZIPファイルであれば、そのファイルを解凍します。
  4. ZIPファイルの解凍 ZIPファイルを解凍するためには、zipfile.ZipFile() を使ってそのZIPファイルを開きます。extractall() メソッドを使用して、指定したディレクトリ内にすべてのファイルを解凍します。

使い方

  1. 上記のコードをコピーし、任意のテキストエディタ(VSCodeやSublime Textなど)に貼り付けます。
  2. directory_path に、解凍したいZIPファイルが保存されているフォルダのパスを入力します。
  3. .py ファイルとして保存し、Pythonインタプリタで実行します。

実行後、指定されたディレクトリ内のすべてのZIPファイルが解凍され、元のディレクトリに展開されます。

注意点

  • 同じディレクトリにすでに解凍されたファイルが存在する場合、上書きされることがあります。
  • 解凍先のディレクトリが容量不足になる場合があるので、事前にディスク容量を確認しておくことをお勧めします。

まとめ

このスクリプトを使用することで、フォルダ内にあるすべてのZIPファイルを一度に解凍することができます。バックアップの復元や、大量のファイルの管理が必要な場合に非常に役立つツールです。Pythonを使った簡単なスクリプトですが、大量のZIPファイルを手動で解凍する手間を省くことができるため、効率的な作業が可能になります。

コメント

タイトルとURLをコピーしました