初心者でも簡単!PythonでファイルをZIP形式に圧縮する基本のプログラム


みなさん、こんにちは!
タカハシ(@ntakahashi0505)です。

プログラミング初心者かつWindowsユーザー向けに、Pythonでいろんな便利ツールを作る方法をお伝えしています。

メールで複数のファイルを送信したいとき、どのようにしていますか?

2,3個であればそのまま添付しちゃってもOKですが、それ以上のファイル数になると、添付も面倒ですし、受け取った相手も面倒ですよね。

そんな時に、使うのがZIPファイルです。

定期的にZIPファイルを作る必要があれば、Pythonに任せてしまうとラクチンです。

ダブルクリックでも動作させることができますし、バックアップ的にZIPファイル化するときはタスクスケジューラに登録すれば全自動で動作してくれます。

ということで、今回はPythonでファイルをZIP形式に圧縮するプログラムの作り方をお伝えします。

では、行ってみましょう!

スポンサーリンク

zipfileモジュールをインポートする

PythonでZIPファイルを操作するには、標準ライブラリに含まれるzipfileモジュールを使います。

使う場合は、スクリプトの冒頭でインポートをすればOKです。

import zipfile

ZipFileオブジェクトを生成する

その上で、まずはzipfile.ZipFile関数を使いまして、ZipFileオブジェクトというZIPファイルの読み書きをするために使うオブジェクトを生成します。

「ジップファイル」だらけですが、混乱しないようにしてくださいねw

書き方はコチラです。

zipfile.ZipFile(file, mode)

fileはフルパスで指定してもよいですし、ファイル名だけならスクリプトファイルと同階層のフォルダ配下のファイルになります。

これで、指定したファイル名でZIPファイルが、指定したモードで開かれます。

modeはどのようなモードでfileを開くかという指定になりまして、以下のような文字を指定します。

  • 読み取り専用:r(デフォルト)
  • 書き込み:w
  • 追加書き込み:a

ZIPファイルを展開するのであれば「r」、上書きするのであれば「w」ですね。「a」を設定すれば、ZIPファイルにファイルを追加していくということもできるモードにないrます。

例として、書き込みモードで「test.zip」というzipファイルを作るであれば

myzip = zipfile.ZipFile('test.zip','w')

とします。

「test.zip」が存在していなければ、新規で作成されますよ。

ZIPファイルをwith文を使って開く

ZipFileオブジェクトとして開いたZIPファイルは、closeメソッドで閉じる必要があります。

例えば、以下のようなスクリプトですね。

import zipfile
myzip = zipfile.ZipFile('test.zip','a')
#処理
myzip.close()

ただ、closeメソッド…忘れちゃいます。それで、ZipFileオブジェクトも、open関数で開いたファイルオブジェクトと同様にwith文で括ることで、closeメソッドを省略することができますよ。

このような書き方です。

with zipfile.ZipFile(file, mode) as 変数:
#処理

ですから、前述のスクリプトは以下のように書き換えることができます。

import zipfile
with zipfile.ZipFile('test.zip','a') as myzip:
     #処理

スッキリですね!

writeメソッドでZIPファイルにファイルを追加する

こうして開いたZIPファイルにファイルを追加するには、writeメソッドを使います。

ZipFileオブジェクト.write(file)

fileにフルパスまたは、スクリプトファイルと同階層のファイルを指定すればOKです。

例えば、スクリプトファイルと同階層の「test.csv」をZIPファイルとして圧縮するのであれば、以下のようにします。

import zipfile
with zipfile.ZipFile('test.zip','w') as myzip:
     myzip.write('test.csv')

実行しますと、以下のように同階層のフォルダに「test.zip」ができました。

Pythonで作成したZIPファイル

ZIPファイルの中身ものぞいてみましょう。

Pythonで作成したZIPファイルの中身

ちゃんと「test.csv」が含まれていますね。

まとめ

PythonでファイルをZIPファイルに圧縮する方法の基本についてお伝えしました。

  • zipfileモジュールをインポート
  • ZipFileオブジェクトを生成
  • writeメソッドで書き込み

なんか、他のモジュールと似ていますよね。助かります。

さて、次回は複数ファイルを圧縮する準備として、フォルダツリーを渡り歩いてサブフォルダとファイルをリストアップする方法をお伝えします。

Pythonでフォルダ内のサブフォルダ&ファイルを全てリストアップする方法
初心者向け&Windowsユーザー向けPythonでZIP圧縮をするツールの作り方をお伝えしています。今回はPythonでフォルダ内のツリー構造を走査してサブフォルダとファイルを全てリストアップする方法です。

どうぞお楽しみに!

連載目次:初心者向け!PythonでファイルをZIP圧縮するツールを作る

複数ファイルをまとめてZIPに圧縮すると、メール添付やバックアップなどに便利です。定期的にZIP圧縮をする必要があるのであれば、Pythonに任せてしまいましょう!ツールの作り方をシリーズでお伝えしていきます。
  1. 初心者でも簡単!PythonでファイルをZIP形式に圧縮する基本のプログラム
  2. Pythonでフォルダ内のサブフォルダ&ファイルを全てリストアップする方法
  3. Pythonで指定フォルダ配下のサブフォルダとファイルを全てZIP圧縮する方法
  4. Pythonで現在の日時を取得して指定のフォーマットの文字列に変換する

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