python: abrir um ficheiro do zip sem o extrair temporariamente
Como posso abrir arquivos de um arquivo zip sem extraí-los primeiro?
Estou a usar o pygame. Para salvar o espaço em disco, tenho todas as imagens fechadas.
É possível carregar uma determinada imagem diretamente do arquivo zip? Por exemplo:
pygame.image.load('zipFile/img_01')
40
3 answers
A resposta de Vincent Povirk não funcionará completamente.
import zipfile
archive = zipfile.ZipFile('images.zip', 'r')
imgfile = archive.open('img_01.png')
...
Tens de o mudar em:
import zipfile
archive = zipfile.ZipFile('images.zip', 'r')
imgdata = archive.read('img_01.png')
...
Para mais detalhes, leia os documentos do ZipFile.
54
Author: Jellema, 2018-02-16 02:41:09
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)
Eu estava a tentar descobrir isto por mim mesmo e pensei que isto poderia ser útil para qualquer um que se depare com esta questão no futuro.
11
Author: Brandon, 2014-01-27 17:26:02
Em teoria, sim, É só uma questão de ligar as coisas. O Zipfile pode lhe dar um objeto como arquivo para um arquivo em um arquivo zip, e imagem.o load irá aceitar um objecto semelhante ao ficheiro. Então algo assim deve funcionar.
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()
3
Author: Vincent Povirk, 2013-10-15 01:36:27