Python 標準ライブラリ zip ZIPアーカイブの圧縮と展開
Publish date: 2021-08-09
ライブラリzipfileを使うとZIPアーカイブの圧縮と展開を行えます。
ZIPファイルの圧縮
zipfile.ZipFile(file, mode='r', compression=ZIP_STORED, allowZip64=True, compresslevel=None, *, strict_timestamps=True)
でZipFileオブジェクトを作成後、ファイルを追加してZIPファイルを作成する。
既存のファイルを追加する場合はwrite
、
バイト配列からファイルを作成する場合はwritestr
を使う。
import zipfile
with zipfile.ZipFile('./sample.zip', 'w') as f:
f.write('./sample1.txt')
f.write('./sample2.txt')
f.write('./dir1/sample3.txt')
f.writestr('sample4.txt', 'テストファイル'.encode('utf-8'))
f.close()
ZIPファイルの展開
- infolist アーカイブ内オブジェクト情報のリスト
- namelist アーカイブ内オブジェクトの名称のリスト
- getinfo(name) 名称を指定してアーカイブ内オブジェクトの情報を取得
- read(name, pwd=None) 名称を指定してオブジェクトのバイト配列を取得
- extractall(path=None, members=None, pwd=None) アーカイブの展開
with zipfile.ZipFile('./sample.zip', 'r') as f:
print(f.infolist())
print(f.namelist())
print(f.getinfo("sample1.txt"))
print(f.read('sample2.txt').decode())
f.extractall('extracted')
f.close()