1. ホーム
  2. python

[解決済み] Python インメモリ ZIP ライブラリ

2023-01-23 01:34:56

質問

実際のディスクファイルを使用せずに、メモリ上でzipアーカイブを操作できるPythonのライブラリはありますか?

ZipFile ライブラリはアーカイブを更新することを許しません。唯一の方法は、ディレクトリに展開し、変更を加え、そのディレクトリから新しい zip を作成することのようです。私はディスクアクセスなしで zip アーカイブを変更したいのです。なぜなら、私はそれらをダウンロードし、変更を加え、再びアップロードするので、それらを保存する理由がないからです。

Java の ZipInputStream/ZipOutputStream に似たものがそのトリックを行うでしょうが、ディスクアクセスを回避するすべてのインタフェースが問題ないでしょう。

どのように解決するのですか?

によると Python ドキュメント :

class zipfile.ZipFile(file[, mode[, compression[, allowZip64]]])

  Open a ZIP file, where file can be either a path to a file (a string) or a file-like object. 

つまり、メモリ上でファイルを開くには、単にファイルのようなオブジェクトを作成すればよいのです(おそらく バイトIO ).

file_like_object = io.BytesIO(my_zip_data)
zipfile_ob = zipfile.ZipFile(file_like_object)