最初に解凍せずに zip アーカイブ内のファイルを開くにはどうすればよいですか?
私はパイゲームを使用しています。ディスク容量を節約するために、すべての画像を圧縮しました。特定のイメージを zip ファイルから直接ロードすることは可能ですか? 例えば:
pygame.image.load('zipFile/img_01')
Vincent Povirk の答えは完全には機能しません。
import zipfile
archive = zipfile.ZipFile('images.zip', 'r')
imgfile = archive.open('img_01.png')
...
次の場所で変更する必要があります。
import zipfile
archive = zipfile.ZipFile('images.zip', 'r')
imgdata = archive.read('img_01.png')
...
詳細については、こちらZipFile
のドキュメントを参照してください。
import io, pygame, zipfile
archive = zipfile.ZipFile('images.zip', 'r')
# read bytes from archive
img_data = archive.read('img_01.png')
# create a pygame-compatible file-like object from the bytes
bytes_io = io.BytesIO(img_data)
img = pygame.image.load(bytes_io)
私は今これを自分で理解しようとしていましたが、これは将来この質問に出くわした人にとって役立つかもしれないと考えました.
Python 3.2 以降ではZipFile
、 をコンテキスト マネージャとして使用できます。
from zipfile import ZipFile
with ZipFile('images.zip') as zf:
for file in zf.namelist():
if not file.endswith('.png'): # optional filtering by filetype
continue
with zf.open(file) as f:
image = pygame.image.load(f, namehint=file)
with
ステートメント) を使用する利点は、ファイルが自動的に適切に閉じられることです。f
通常のファイル オブジェクトのように使用できます。