この記事では、Python言語でファイルのZIP圧縮をする方法をソースコード付きで解説します。
ファイルのZIP圧縮
Python言語の標準ライブラリ・モジュール「zipfile」でファイルのZIP圧縮ができます。
書式
zip = zipfile.ZipFile(ZIPファイル名, モード, オプション) zip.write(ZIP圧縮したいファイル名) zip.close()
引数 | 説明 |
---|---|
モード | 書き込みモードは”w”、読み込みモードは”r” |
オプション | 「ZIP_STORED」ならファイルサイズ自体は非圧縮、「ZIP_DEFLATED」はファイルサイズも圧縮 |
サンプルプログラムのソースコードです。
サンプル1
# -*- coding: utf-8 -*- import zipfile # ZIP圧縮するファイルのリスト filelist = ["test.jpg","test.png","test.txt"] # ZIP圧縮の設定 zip1 = zipfile.ZipFile("test.zip", "w", zipfile.ZIP_STORED) # ZIP圧縮 for i, filename in enumerate(filelist): zip1.write(filename) zip1.close()
サンプル2
# -*- coding: utf-8 -*- import zipfile # ZIP圧縮するファイルのリスト filelist = ["test.jpg","test.png","test.txt"] # ZIP圧縮の設定 zip1 = zipfile.ZipFile("test.zip", "w", zipfile.ZIP_DEFLATED) # ZIP圧縮 for i, filename in enumerate(filelist): zip1.write(filename) zip1.close()
test.jpg, test.png, test.txtをまとめてZIP圧縮したファイル「test.zip」が生成されます。
ZIPファイルの解凍(展開)
zipファイルを解凍する場合、ZipFileオブジェクトの「extractallメソッド」を使います。
書式 | zip.extractall(path, pwd=’password’) |
---|---|
path | 解凍先のパス |
psd | パスワード(ある場合) |
サンプルコード
パスワードなしの場合
with zipfile.ZipFile('test.zip') as zip: zip.extractall('ext', pwd='password')
ZIPファイルの解凍(特定のファイルのみ)
特定ファイルのみ解凍したい場合はextractメソッドを使います。
サンプルコード
with zipfile.ZipFile('test.zip') as zip: zip.extract('test.txt', 'ext', pwd='password')
フォルダ内の全てのzipファイルを解凍
Python標準モジュール「ZipFile」「glob」を使うことでフォルダ内の全てのZIPファイルを解凍できます。
# -*- coding: utf-8 -*- import os from glob import glob from zipfile import ZipFile zip_dir = "./src" ext_dir = "./ext" files = glob(os.path.join(zip_dir, '*.zip')) for file in files: with ZipFile(file) as zip: zip.extractall(ext_dir, psw='password')
– | 詳細ページ |
---|---|
※ | ■【Python】フォルダ内の全てのzipファイルを解凍 |
– | 関連記事 |
---|---|
1 | Python入門 サンプル集 |
コメント
サンプル1
【誤】ip1.write(filename)
【正】zip1.write(filename)
※匿名様
いつもコメントありがとうございます。
誤記を修正いたしました。