この記事で分かること
- Pythonプログラムでzip形式の圧縮ファイルに圧縮する方法が分かる
- Pythonプログラムでzip形式の圧縮ファイルを解凍する方法が分かる
Pythonでzipファイルを解凍・圧縮する概要
オフィス環境では書類などのサイズの大きいファイルはzipで圧縮されていることが多いです。この圧縮ファイルを扱う為にはまずはファイルを解凍しなければなりませんが、圧縮ファイルの数が多い場合や、パスワードがかかっているとなると、手作業が多くなって業務効率が悪くなります。
Pythonプログラムを用いると、zip形式ファイルを解凍したり、zip形式に圧縮することができます。この記事では、Pythonを使ったzip圧縮方法と解凍方法を説明します。
Pythonでzipファイルを解凍・圧縮する前提環境
zipファイルを圧縮・解凍する前提の環境は、下の記事で説明している私の環境と同じ環境で確認しています。
レンタルサーバなどのLinuxサーバを使っている場合は、下の記事でプログラミングする環境の作り方を説明しています。
もし、まだプログラムする環境ができていない方は、先にこちらの記事を読んで、プログラミングできる環境をつくることをおすすめします。
Pythonでzipファイルを解凍・圧縮するサンプルプログラム
ここでは、「zip解凍する関数」と「zip圧縮する2つの関数」を定義するプログラムを書き、それらの2つを実行するプログラムによって、zip解凍と圧縮する方法を説明します。
- ライブラリのインポート
- zipファイルを解凍する関数の定義
- zipファイルを圧縮する関数の定義
- 定義した関数の呼び出し
1.ライブラリのインポート
まず初めに、必要なライブラリをインポートします。下のソースコードでは、zipファイルの扱いに必要な「zipfile」ライブラリをインポートしています。
import zipfile
ライブラリ「zipfile」をインポートする。
2.zipファイルを解凍する関数の定義
次に、zipファイルを解凍する関数の定義することで、zip解凍方する法を説明します。ここで作成したサンプルプログラムは、現在実行しているPythonファイルと同じディレクトリ(カレントディレクトリ)に存在するファイル名「zip_name」のzipファイルを解凍するプログラムです。zipファイルの解凍には、「zipfile」ライブラリの「extractall」という関数を使って解凍します。
def decompress(zip_name):
with zipfile.ZipFile('./' + zip_name) as zf:
zf.extractall()
- 関数「decompress」を定義宣言する。
- カレントディレクトリの変数「zip_name」で指定されている名前のファイルからzipfileオブジェクトを作成し、そのオブジェクトで変数「zf」を初期化する。
- 変数「zf」に対してzip解凍する。
上記プログラムの「withとas」の使い方について知りたい場合は、下記の記事を読んでください。
3.zipファイルを圧縮する関数の定義
次に、zipファイルを圧縮する関数を定義して、zip圧縮する方法を説明します。ここで示すサンプルプログラムは、現在実行しているPythonファイルと同じディレクトリ(カレントディレクトリ)に存在する変数「file」で指定されたファイルを、同じ名前でzip圧縮するプログラムです。圧縮するためには、「zipfile」ライブラリの関数「write」を使ってファイルに書き出します。
def compress(file):
with zipfile.ZipFile('./' + file + '.zip', "w", zipfile.ZIP_DEFLATED) as zf:
zf.write( file, file)
- 関数「compress」を定義宣言する。
- 変数「file」で指定されている名前と「.zip」という拡張子の名前からzipfileオブジェクトを作成し、そのオブジェクトで変数「zf」を初期化する。
- 変数「zf」に対してzip圧縮する。
上記プログラムの「withとas」の使い方について知りたい場合は、下記の記事を読んでください。
4.定義した関数の呼び出し
ここでは、zipファイル名を「test.txt.zip」と定義し、上記で定義した2つの関数の呼び出しを行います。
if __name__ == '__main__':
zip_name = 'test.txt.zip'
compress(zip_name)
decompress(zip_name)
- 文字列「test.txt.zip」で変数「zip_name」を初期化する。
- 変数「zip_name」を引数に指定し、関数「compress」を呼ぶ。
- 変数「zip_name」を引数に指定し、関数「decompress」を呼ぶ。
Pythonで業務効率化するその他の方法
この記事では、圧縮ファイルの数が多い場合や、パスワードがかかっている場合の作業業務効率化のために、Pythonを使ったzip圧縮方法と解凍方法を説明しました。
zip圧縮方法と解凍方法以外にも、Pythonには、業務効率化できる手段がたくさんあります。
下記の記事に、普段オフィス環境で使われるツールを使って業務効率化できる方法をまとめていますので、ぜひ合わせて読んで取り組んでみてください。