大量にダウンロードしたzipファイルを一気に解凍するという場面が時々あったので、メモとして保存します。
import zipfile
import os
path = 'zipファイルが格納されているフォルダのパス'
output = '解凍したデータ保存先のパス'
#ファイル名を取得
files = os.listdir(path)
#ひとつずつ解凍
for i in files:
#zipファイル名のフォルダがなければ新しく作る
if not os.path.isdir(output + i):
os.mkdir(output + i)
#解凍
zf = zipfile.ZipFile(path + i)
zf.extractall(output + i)
これで保存先にそれぞれのファイル名のフォルダができ、解凍したデータが保存されました。
最初にやってしまったミスとして、zipファイルを格納しているディレクトリにファイルでないもの(保存先にしようとしていた空のフォルダ)を置いてしまったことが原因のエラーがあり、zf.extractallが途中で止まってしまいました。
その他、listdirで取得できるのはそのディレクトリにおける名前のみであって完全なパスではないなど、短くて簡単なコードですが個人的にうっかりミスを起こしやすいものだったので記録しておきたいと思いました。