見出し画像

[Python] 圧縮ファイル内から指定した拡張子のみを解凍する

はじめに

Pythonで、圧縮ファイル(zip)を解凍する事が可能です。その時に、
・指定した拡張子だけを解凍
・指定する拡張子が複数ある
場合、こんな感じで実装できます。

使用するライブラリ

・zipfile

zipファイル形式の作成、読み込み、書き込み、圧縮ファイル内の一覧を参照することができます。

動作環境

・windows10
・Python 3.7.6

実装

import zipfile

zip_file_name = r'c:\huga\hugahuga.zip'
path = r'c:\hoge\'
extensions = ('.jpg','.jpeg','.png','.gif','.txt','.css','.js','.html')
with zipfile.ZipFile(zip_file_name) as zf:
	for file in zf.namelist():
		if zf.getinfo(file).filename.endswith(extensions):
			# print(zf.getinfo(file).filename)
			zf.extract(zf.getinfo(file).filename,path)
extensions = ('.jpg','.jpeg','.png','.gif','.txt','.css','.js','.html')

解凍したい拡張子を、タプル型で定義します。

for file in zf.namelist():

ZipFileオブジェクトのnamelistメソッドにて、圧縮ファイル内のファイルリストを取得することができるので、1ファイルずつ取得しています。

if zf.getinfo(file).filename.endswith(extensions):

ファイル名の拡張子を判定するのに、endswithメソッドを使用しています。このメソッドに、引数で検索する文字列を渡すのですが、複数渡したい時に、タプル型で渡すことができます。リスト型だとエラーになります。

zf.extract(zf.getinfo(file).filename,path)

ZipFileオブジェクトのextractメソッドでは、第1引数で指定したファイルのみを解凍します。

まとめ

Pythonで、圧縮ファイル内から指定した拡張子のみを解凍するツールをご紹介しました。

解凍ツールを使って一気に解凍し、その後指定拡張子のファイル以外を削除、とすることも可能ですが、そんなのめんどくさい、なんて時にサクッと実装して使えると思います。

参考サイト


この記事が気に入ったらサポートをしてみませんか?