Python: Öffnen Sie die Datei aus dem Zip, ohne sie vorübergehend zu extrahieren

Wie kann ich Dateien aus einem Zip-Archiv öffnen, ohne sie zuerst zu extrahieren?

Ich verwende pygame. Um Speicherplatz zu sparen, habe ich alle Bilder gezippt. Ist es möglich, ein bestimmtes Bild direkt aus der Zip-Datei zu laden? Zum Beispiel: pygame.image.load('zipFile/img_01')

3 Solutions collect form web for “Python: Öffnen Sie die Datei aus dem Zip, ohne sie vorübergehend zu extrahieren”

Vincent Povirks Antwort wird nicht ganz 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 Notizen unter 'ZipFile.open (Name [, Modus [, pwd]])' in der Dokumentation auf: http://docs.python.org/2/library/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) 

Ich habe versucht, dies jetzt für mich selbst herauszufinden und dachte, das könnte für jeden nützlich sein, der diese Frage in der Zukunft begegnet.

In der Theorie, ja, es ist nur eine Frage der Plugging Dinge in. Zipfile kann Ihnen ein Datei-wie Objekt für eine Datei in einem Zip-Archiv, und image.load wird ein Datei-wie Objekt zu akzeptieren. So sollte so etwas 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() 
  • Python - wie man Unicode-Dateinamen in CP437 konvertiert?
  • Zipfile-Modul mit unzuverlässigen Ergebnissen
  • Wie man eine Datei in Zip-Datei mit python [duplicate]
  • Mit Python können Sie eine Liste von Dateien in eine Zip-Datei hinzufügen
  • Senden von mehreren .CSV-Dateien an .ZIP ohne Speicherung auf Festplatte in Python
  • Lade eine Pickle-Datei aus einer Zip-Datei
  • Python ZipFile Pfadtrennzeichen
  • Symlink in einem Zipfile im Speicher mit Python erstellen
  • Python entpackt AES-128 verschlüsselte Datei
  • Wie man den Prozentsatz des Zipping einer Datei python drucken kann
  • Python zipfile-Modul scheint nicht zu komprimieren meine Dateien
  • Python ist die beste Programmiersprache der Welt.