Работа с gzip

 
0
 
Python
ava
Isaev | 14.04.2013, 10:48
Доброго времени суток
Получаю данные от сервера, в заголовке

Accept-Encoding:gzip,deflate,sdch

Значит данные приходят в gzip как я понял? (или просто zlib надо использовать?)
данные всегда с сигнатурой "78 DA"(compression extreme) по идее это zlib должен быть... или у gzip тоже такая сигнатура?
читаю в файл, потом пытаюсь перекодировать. в python чайник
полазил по просторам сети, нашёл что-то типа(python 3):

import io,gzip

zbuf = io.StringIO()
zfile = gzip.GzipFile(mode='rb', fileobj=zbuf)
zfile.read()
zfile.close()
f=open('out.txt','wb')
f.write(zbuf)
f.close()

но оно не работает (пока)
т.к. куда вставить название исходного файла я не понял
да и вообще то ли я делаю?

для примера входной файл "78 DA 33 34 32 36 31 35 33 B7 00 00 07 40 01 A5" бинарный конечно
на выходе должна быть строка "12345678"
Comments (5)
ava
Isaev | 14.04.2013, 18:41 #
Ребят, ну исправьте глупую ошибочку.... каждый третий наверняка видит, не бойтесь советовать, я попробую ;)
ava
Backward | 15.04.2013, 04:51 #
Как-то так должно работать

import zlib

def decompress(data, mode="gzip"):
    zlib_mode = 16 + zlib.MAX_WBITS if mode == 'gzip' else -zlib.MAX_WBITS
    dec = zlib.decompressobj(zlib_mode)
    return dec.decompress(data)

with open("test.txt", "rb") as fin, open("out.txt", "wb") as fout:
    fout.write(decompress(fin.read()))
ava
Isaev | 16.04.2013, 04:06 #
Backward, не компилируется немного... а вообще задумка мне нравится

Traceback (most recent call last):
  File "unitest.py", line 8, in <module>
    fout.write(decompress(fin.read()))
  File "unitest.py", line 6, in decompress
    return dec.decompress(data)
zlib.error: Error -3 while decompressing data: incorrect header check
ava
Backward | 17.04.2013, 02:56 #
Для данных, которые Вы привели, работает так:

import zlib
with open("test.txt", "rb") as fin, open("out.txt", "wb") as fout:
    fout.write(zlib.decompress(fin.read()))
ava
Isaev | 17.04.2013, 14:58 #
Backward, благодарю, работает smile
Please register or login to write.
Firm of day
Вы также можете добавить свою фирму в каталог IT-фирм, и публиковать статьи, новости, вакансии и другую информацию от имени фирмы.
Подробнее
Contributors
  Backward   Isaev
advanced
Submit