最初に解凍せずにZipアーカイブからファイルを開くにはどうすればよいですか?
私はpygameを使用しています。ディスク容量を節約するために、すべてのイメージを圧縮しています。 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
docs here を参照してください。
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)
私は今これを自分で理解しようとしており、これは将来この質問に出くわす人にとって役に立つかもしれないと思っていました。
理論的には、はい、プラグインするだけです。Zipfileは、Zipアーカイブ内のファイルにファイルのようなオブジェクトを与えることができ、image.loadはファイルのようなオブジェクトを受け入れます。したがって、次のようなものが機能するはずです。
import zipfile
archive = zipfile.ZipFile('images.Zip', 'r')
imgfile = archive.open('img_01.png')
try:
image = pygame.image.load(imgfile, 'img_01.png')
finally:
imgfile.close()