2021-08-09に投稿

Python 標準ライブラリ zip ZIPアーカイブの圧縮と展開

ライブラリ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()

参考

Originally published at marusankakusikaku.jp
ツイッターでシェア
みんなに共有、忘れないようにメモ

maru3kaku4kaku

Pythonこつこつ学習中。よく忘れる。

Crieitは誰でも投稿できるサービスです。 是非記事の投稿をお願いします。どんな軽い内容でも投稿できます。

また、「こんな記事が読みたいけど見つからない!」という方は是非記事投稿リクエストボードへ!

有料記事を販売できるようになりました!

こじんまりと作業ログやメモ、進捗を書き残しておきたい方はボード機能をご利用ください。
ボードとは?

コメント