Python

【Python】zipファイルを解凍・圧縮する方法【→業務効率UP】

8月 8, 2019

how to zip and unzip on python
プログラム女子
職場で、ZIPファイルをやり取りすることが多いんだけど、数が多いから一気に解凍する方法ないのかな...
Pythonの「zipfile」というライブラリを使えば、一気に解凍できるよ。今回は、このライブラリを使って、zip解凍と圧縮する方法を紹介するね。
Tommy

この記事で分かること

  • Pythonプログラムでzip形式の圧縮ファイルに圧縮する方法が分かる
  • Pythonプログラムでzip形式の圧縮ファイルを解凍する方法が分かる

Pythonでzipファイルを解凍・圧縮する概要

summary of zip and unzip on python

オフィス環境では書類などのサイズの大きいファイルはzipで圧縮されていることが多いです。この圧縮ファイルを扱う為にはまずはファイルを解凍しなければなりませんが、圧縮ファイルの数が多い場合や、パスワードがかかっているとなると、手作業が多くなって業務効率が悪くなります。

Pythonプログラムを用いると、zip形式ファイルを解凍したり、zip形式に圧縮することができます。この記事では、Pythonを使ったzip圧縮方法と解凍方法を説明します。

Pythonでzipファイルを解凍・圧縮する前提環境

environment of zip and unzip on python

zipファイルを圧縮・解凍する前提の環境は、下の記事で説明している私の環境と同じ環境で確認しています。

オススメ
how to check version in python
【Python】バージョン確認の方法【→プログラミング初心者向け】

続きを見る

レンタルサーバなどのLinuxサーバを使っている場合は、下の記事でプログラミングする環境の作り方を説明しています。

もし、まだプログラムする環境ができていない方は、先にこちらの記事を読んで、プログラミングできる環境をつくることをおすすめします。

オススメ
how to programming on rental server
【Linux】レンタルサーバーでプログラミングする方法【→ブログのサーバーでできる!】

続きを見る

Pythonでzipファイルを解凍・圧縮するサンプルプログラム

sample program of zip and unzip on python

ここでは、「zip解凍する関数」と「zip圧縮する2つの関数」を定義するプログラムを書き、それらの2つを実行するプログラムによって、zip解凍と圧縮する方法を説明します。

  1. ライブラリのインポート
  2. zipファイルを解凍する関数の定義
  3. zipファイルを圧縮する関数の定義
  4. 定義した関数の呼び出し

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()

  1. 関数「decompress」を定義宣言する。
  2. カレントディレクトリの変数「zip_name」で指定されている名前のファイルからzipfileオブジェクトを作成し、そのオブジェクトで変数「zf」を初期化する。
  3. 変数「zf」に対してzip解凍する。

上記プログラムの「withとas」の使い方について知りたい場合は、下記の記事を読んでください。

オススメ
how to use as and with in python
【Python】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)

  1. 関数「compress」を定義宣言する。
  2. 変数「file」で指定されている名前と「.zip」という拡張子の名前からzipfileオブジェクトを作成し、そのオブジェクトで変数「zf」を初期化する。
  3. 変数「zf」に対してzip圧縮する。

上記プログラムの「withとas」の使い方について知りたい場合は、下記の記事を読んでください。

オススメ
how to use as and with in python
【Python】withとasの使い方【→プログラミング初心者向け】

続きを見る

4.定義した関数の呼び出し

ここでは、zipファイル名を「test.txt.zip」と定義し、上記で定義した2つの関数の呼び出しを行います。

if __name__ == '__main__':
	zip_name = 'test.txt.zip'
	compress(zip_name)
	decompress(zip_name)

  1. 文字列「test.txt.zip」で変数「zip_name」を初期化する。
  2. 変数「zip_name」を引数に指定し、関数「compress」を呼ぶ。
  3. 変数「zip_name」を引数に指定し、関数「decompress」を呼ぶ。

Pythonで業務効率化するその他の方法

other way of business efficiency by python

この記事では、圧縮ファイルの数が多い場合や、パスワードがかかっている場合の作業業務効率化のために、Pythonを使ったzip圧縮方法と解凍方法を説明しました。

zip圧縮方法と解凍方法以外にも、Pythonには、業務効率化できる手段がたくさんあります。

下記の記事に、普段オフィス環境で使われるツールを使って業務効率化できる方法をまとめていますので、ぜひ合わせて読んで取り組んでみてください。

オススメ
8 ways for business efficiency by python
【Python】業務効率化の方法8選【→周りを出し抜く自動化】

続きを見る

-Python
-