python: ouvrir le fichier à partir de zip sans l'extraire Temporairement
Comment puis-je ouvrir des fichiers à partir d'une archive zip sans les extraire en premier?
j'utilise pygame. Pour économiser de l'espace disque, j'ai toutes les images zippée.
Est-il possible de charger une image directement à partir du fichier zip? Exemple:
pygame.image.load('zipFile/img_01')
3 réponses
la réponse de Vincent Povirk ne fonctionnera pas complètement;
import zipfile
archive = zipfile.ZipFile('images.zip', 'r')
imgfile = archive.open('img_01.png')
...
Vous devez modifier dans:
import zipfile
archive = zipfile.ZipFile('images.zip', 'r')
imgdata = archive.read('img_01.png')
...
pour plus de détails lire le ZipFile docs ici
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)
j'essayais de comprendre cela par moi-même tout à l'heure et j'ai pensé que cela pourrait être utile à quiconque rencontrerait cette question à l'avenir.
En théorie, oui, c'est juste une question de brancher le tout. Zipfile peut vous donner un objet semblable à un fichier pour un fichier dans une archive zip, et une image.la charge d'accepter un fichier objet semblable. Donc quelque chose comme ça devrait marcher:
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()