[完全自動化]複数のファイルをzip形式で圧縮する方法[Python]

スポンサードリンク
実行見本 Python
過去の自分
過去の自分

いつも手動でやっているファイルの圧縮を自動でしたいんだけど、
圧縮したいファイルが大量にある…。
Pythonで大量のファイルを圧縮できないの?

今の自分
今の自分

できます!
「複数のファイルをzip形式で圧縮する方法」
をできるだけわかりやすく解説いたします!

【著者情報】
Python歴3年。
入社2年目の春に先輩が突然トンズラし、業務を半分肩代わりするハメに…。
今までの1.5倍の仕事をこなせるはずもなく、苦しむ毎日。
業務効率化を模索中にPythonと出合う。
業務とPythonの相性が良く、2倍以上の効率化を実現。現在も効率化を進行中。

スポンサードリンク

[Python]複数のファイルをzip形式で圧縮するには

「zipfile」簡単なfor文を使います。まずは実行見本をどうぞ。

実行見本

「Utatane」フォルダ内の全ファイルを圧縮

見本

全コード

import zipfile
import os
import glob

os.chdir('C:/Utatane')
files = glob.glob('*.*')

zf = zipfile.ZipFile('input.zip', 'w', compression = zipfile.ZIP_DEFLATED)

for file in files :
    zf.write(file)

zf.close()

解説

※わかりやすさを重視しております。厳密には解釈が異なる場合がありますことをご了承ください。

手順は下記のとおりです。

  1. (インポート)
  2. 圧縮したいファイルが存在するフォルダへ移動
  3. ファイル一覧を取得
  4. 圧縮ファイルを作成
  5. 複数のファイルを圧縮して閉じる

インポート

import zipfile
import os
import glob

上記のように、3つインポートを行います。
用途は下記のとおりです。

  • zipfile:ファイルを圧縮するのに必要
  • os:特定のフォルダへ移動するのに必要
  • glob:ファイル一覧を取得するのに必要

特定のフォルダへ移動するのに必要

os.chdir('C:/Utatane')

上記一文を記述することで、圧縮したいファイルが存在する「Utatane」フォルダへ移動することができます。
フォルダ自体を移動させているわけではないのでご注意ください。
わかりやすく説明すると、手動で圧縮する時のように「Utataneフォルダ見に行って開いている」というような解釈でOKです。

ファイル一覧を取得

files = glob.glob('*.*')

上記一文にて、「Utatane」フォルダ内のファイル一覧を取得(圧縮するファイル一覧を取得)しています。

「(‘*.*’)」を「(‘*.jpg’)」に変更すると、フォルダ内にあるjpgファイルのみを取得できます。

globについては下記記事をご参考ください。

圧縮ファイルを作成

zf = zipfile.ZipFile('input.zip', 'w', compression = zipfile.ZIP_DEFLATED)

上記記述にて、空っぽのzipファイルを作成しています。

詳細は下記記事にて解説しておりますので、ご参考ください。

複数のファイルを圧縮して閉じる

for file in files :
    zf.write(file)

zf.close()

8行目で作成した空っぽのzipファイルに、圧縮するファイルを入れています。
(for文を利用して、ファイル一覧(files)が無くなるまで追加)

for文については下記記事をご参考ください。

13行目でzipファイルを閉じて終了です。

スポンサードリンク

圧縮後におすすめすること

ファイルの圧縮が完了したら、元ファイルを削除することで、ストレージ容量の削減になります。
ファイルを削除する方法は下記記事をご参考ください。

削除するのがちょっと怖い場合は、元ファイルを別のストレージに移動するのも有効です。
ファイルを移動する方法は下記記事にて解説しております。

スポンサードリンク

最後に

Pythonで複数のファイルをzip形式で圧縮する方法を解説いたしました。

数百枚を超える大量の重いファイルは、保存する際に圧縮するのがベターです。
大量のファイルを操作する際は、ついでに圧縮してしまいましょう。

当ブログでは、Pythonに関する情報を配信しております。
この記事がわかりやすいと感じた方は、他の記事も読んでいってください。

最後までお読みいただき、ありがとうございました。がんばってください!

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