Wie kann ich Dateien in einem Zip-Archiv öffnen, ohne sie zuerst zu extrahieren?
Ich benutze Pygame. Um Speicherplatz zu sparen, habe ich alle Bilder komprimiert. Ist es möglich, ein bestimmtes Bild direkt aus der Zip-Datei zu laden? Zum Beispiel:
pygame.image.load('zipFile/img_01')
Antworten:
Die Antwort von Vincent Povirk wird nicht vollständig funktionieren.
import zipfile archive = zipfile.ZipFile('images.zip', 'r') imgfile = archive.open('img_01.png') ...
Sie müssen es ändern in:
import zipfile archive = zipfile.ZipFile('images.zip', 'r') imgdata = archive.read('img_01.png') ...
Für Details lesen Sie die
ZipFile
Dokumente hier .quelle
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)
Ich habe gerade versucht, dies für mich selbst herauszufinden, und dachte, dies könnte für jeden nützlich sein, der in Zukunft auf diese Frage stößt.
quelle
Theoretisch ist es nur eine Frage des Einsteckens. Mit Zipfile können Sie ein dateiähnliches Objekt für eine Datei in einem Zip-Archiv erhalten, und image.load akzeptiert ein dateiähnliches Objekt. So etwas sollte funktionieren:
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()
quelle