Как я могу открывать файлы в zip-архиве, не распаковывая их предварительно?
Я использую pygame. Чтобы сэкономить место на диске, я заархивировал все образы. Можно ли загрузить данное изображение прямо из zip-файла? Например:
pygame.image.load('zipFile/img_01')
Ответы:
Ответ Винсента Повирка не сработает полностью;
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
документацию здесь .источник
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()
источник