2013-12-05 3 views
2

У меня есть .PNG-файлы в папке. Я хочу сжать их и создать файл .gz. Я добавил данные, но все же он содержит один файл для многих сжатых файлов. и поскольку zlib.compress() принимает строку для сжатия, поэтому мне нужно прочитать данные из файла, а затем сжать ее и записать в файл gz. которые в конечном итоге создают единый файл. Но возникает вопрос: как мне распаковать эти файлы, а затем снова.Сжатие файлов изображений с помощью gzip

опробовал это много нед Сейчас:

gip = gzip.open("out.gz",'a') 
for f in image_list: 
    indata = open(f,'r').read() 
    gip.write(zlib.compress(indata)) 
gip.close() 
+3

Вы, кажется, неправильно понимаете 'gzip'. Это формат сжатия, а не формат архива, поэтому он не предназначен для сжатия нескольких файлов одновременно. Для этого используйте 'zip' или' tar' (как в Python stdlib). –

+0

Обратите внимание, что поскольку PNG использует уже внутреннюю схему сжатия (в зависимости от уровня сжатия), вы, вероятно, не получите значительного уменьшения размера (если это была ваша основная цель). – guidot

ответ

1

GZIP только для сжатия одного потока. Чтобы поддерживать структуру нескольких файлов и каталогов, вам нужен формат tar, который обычно сжимается с помощью gzip. Полученный суффикс имени файла равен .tar.gz.

Используйте tarfile in Python, который будет обрабатывать как tarring, так и gzipping.

Смежные вопросы