この記事では、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)
※匿名様
いつもコメントありがとうございます。
誤記を修正いたしました。