Pythonでzipファイルを解凍するには?
Pythonではzipファイルを解凍するモジュールがあらかじめ用意されています。本記事では、Pythonでzipファイルを解凍するunzip_file関数を作成して処理する方法を紹介します。
unzip_file関数のサンプルコード
まずは、unzip_file関数のサンプルコードを紹介します。
関数の下にはテスト用のコードも記載していますので参考にしてください。
import os
import zipfile
def unzip_file(zip_path, extract_path=None):
"""
Zipファイルを解凍する関数(同一ファイル名が存在する場合には上書きされます)
Args:
zip_path (str): Zipファイルのパス
extract_path (str, optional): 解凍先のパス。未指定の場合はZipファイルと同じ場所に解凍する。
Returns:
bool: 解凍が成功した場合はTrue、失敗した場合はFalseを返す。
"""
try:
if extract_path is None:
extract_path = os.path.dirname(zip_path) # 解凍先パスが未指定の場合はZipファイルと同じ場所に解凍する
with zipfile.ZipFile(zip_path, 'r', allowZip64=True) as zip_ref:
for file_info in zip_ref.infolist():
# 日本語ファイル名をデコードしてから解凍
file_info.filename = file_info.filename.encode('cp437').decode('cp932')
zip_ref.extract(file_info, extract_path)
return True # 解凍成功時
except Exception as e:
print("Error:", str(e))
return False # 解凍失敗時
##############################################################
# 関数のテスト
if __name__ == "__main__":
# テスト1 フォルダを圧縮したZipファイルを解凍zipファイルの場所に解凍
zip_file_path = "C:\\Users\\wkusr\\Desktop\\フォルダ.zip" # 解凍したいZIPファイルのパスを指定
success = unzip_file(zip_file_path)
if success:
print("解凍が成功しました。")
else:
print("解凍に失敗しました。")
# テスト2 フォルダを圧縮したZipファイルを指定の場所に解凍
zip_file_path = "C:\\Users\\wkusr\\Desktop\\フォルダ.zip" # 解凍したいZIPファイルのパスを指定
extract_to_path = "C:\\Users\\wkusr\\Documents\\aaa" # 解凍先のパスを指定。Noneの場合はZIPファイルと同じ場所に解凍
success = unzip_file(zip_file_path, extract_to_path)
if success:
print("解凍が成功しました。")
else:
print("解凍に失敗しました。")
# テスト3 ファイルを圧縮したZipファイルを解凍zipファイルの場所に解凍
zip_file_path = "C:\\Users\\wkusr\\Desktop\\ファイル.zip" # 解凍したいZIPファイルのパスを指定
success = unzip_file(zip_file_path)
if success:
print("解凍が成功しました。")
else:
print("解凍に失敗しました。")
# テスト4 ファイルを圧縮したZipファイルを指定の場所に解凍
zip_file_path = "C:\\Users\\wkusr\\Desktop\\ファイル.zip" # 解凍したいZIPファイルのパスを指定
extract_to_path = "C:\\Users\\wkusr\\Documents\\aaa" # 解凍先のパスを指定。Noneの場合はZIPファイルと同じ場所に解凍
success = unzip_file(zip_file_path, extract_to_path)
if success:
print("解凍が成功しました。")
else:
print("解凍に失敗しました。")
サンプルのzipファイルの中身
今回はサンプルとして2つのzipファイルパターンを用意しています。
パターン1 フォルダを圧縮したzip
このzipファイルはフォルダの中に3つのファイルを圧縮して保存済のファイルです。
パターン2 ファイルのみ圧縮したzip
このzipファイルは3つのファイルを圧縮しただけのzipです。
テスト実行する。
実際にテスト1から4を実行すると次のように解凍されます。
テスト1 フォルダを圧縮したZipファイルを解凍zipファイルの場所に解凍
デスクトップにフォルダごと解凍されます。
テスト2 フォルダを圧縮したZipファイルを指定フォルダへ解凍
指定場所(今回はドキュメントのaaaフォルダに)解凍されます。
テスト3 ファイルを圧縮したZipファイルを解凍zipファイルの場所に解凍
デスクトップにファイルが解凍されます。
テスト4 ファイルを圧縮したZipファイルを指定フォルダへ解凍
指定場所(今回はドキュメントのaaaフォルダに)解凍されます。
最後に
以上がPythonでzipファイルを解凍する出力する方法です。
Pythonではすでに用意されているzipfileモジュールで簡単に解凍することが可能となっています。
コメント