この記事では、Pythonの標準ライブラリであるzipfileモジュールを使ったファイルの圧縮方法と、外部ライブラリであるpyzipperを使ったzip形式の操作方法について解説します。
Pythonの標準ライブラリを使ったzip圧縮方法
Pythonでは、標準ライブラリのzipfileモジュールを使用することで、簡単にファイルやフォルダをzip形式で圧縮することができます。
この記事では、zipfileモジュールの使い方や圧縮のオプションについて解説します。
zipfileモジュールの概要
zipfileモジュールは、zip形式のアーカイブファイルを作成・操作するための機能を提供しています。
このモジュールを使用することで、Pythonプログラムから簡単にzipファイルを作成したり、既存のzipファイルを解凍したりすることができます。
zipfileモジュールで圧縮する
zipfileモジュールを使用してファイルやフォルダを圧縮するには、以下の手順を実行します。
- zipfileモジュールをインポートする
- 圧縮するファイルやフォルダのパスを指定する
- 圧縮後のzipファイルのパスを指定する
- ZipFileオブジェクトを作成し、
write()メソッド
を使用してファイルやフォルダを圧縮する - ZipFileオブジェクトをクローズする
以下に、ファイルを圧縮する例を示します。
import zipfile
def compress_file(file_path, zip_path):
with zipfile.ZipFile(zip_path, 'w') as zipf:
zipf.write(file_path)
# ファイルを圧縮する
compress_file('sample.txt', 'sample.zip')
上記の例では、sample.txt
というファイルをsample.zip
という名前のzipファイルに圧縮しています。
ZipFile
オブジェクトを作成する際に、第1引数にzipファイルのパス、第2引数にモードを指定します。
zipファイルの圧縮のオプション
zipfileモジュールでは、圧縮時にさまざまなオプションを指定することができます。
以下に代表的なオプションを紹介します。
compression
: 圧縮の種類を指定します。
デフォルトはZIP_STORED
で、圧縮を行わずにファイルを格納します。
ZIP_DEFLATED
ZIP_BZIP2
ZIP_LZMA
を指定すると、データを圧縮して格納します。
compresslevel
: 圧縮レベルを指定します。
0
から9
の範囲で指定できます。
0
は無圧縮、9
は最大圧縮です。
以下に、オプションを指定してファイルを圧縮する例を示します。
import zipfile
def compress_file(file_path, zip_path):
with zipfile.ZipFile(zip_path, 'w', compression=zipfile.ZIP_DEFLATED, compresslevel=5) as zipf:
zipf.write(file_path)
# ファイルを圧縮する
compress_file('sample.txt', 'sample.zip')
上記の例では、compress_type
にzipfile.ZIP_DEFLATED
を指定してデータを圧縮し、compresslevel
に5
を指定して圧縮レベルを中程度に設定しています。
圧縮レベルが高いほど圧縮後の容量が小さくなりますが、圧縮時間が長くなります。
以上が、Pythonの標準ライブラリを使ったzip圧縮の方法についての解説です。
zipfileモジュールの機能を活用して、簡単にファイルやフォルダを圧縮してみてください。