Найти - Пользователи
Полная версия: Работа с gzip
Начало » Python для новичков » Работа с gzip
1
Isaev
Доброго времени суток
Получаю данные от сервера, в заголовке
Accept-Encoding:gzip,deflate,sdch
Значит данные приходят в gzip как я понял? (или просто zlib надо использовать?)
данные всегда с сигнатурой “78 DA”(compression extreme) по идее это zlib должен быть… или у gzip тоже такая сигнатура?
читаю в файл, потом пытаюсь перекодировать. в python чайник
полазил по просторам сети, нашёл что-то типа(python 3):
import io,gzip
a=open('test.txt','rb')
z=a.read()
a.close()
zbuf = io.StringIO(z)
zfile = gzip.GzipFile(mode='rb', fileobj=zbuf)
zfile.read()
zfile.close()
f=open('out.txt','wb')
f.write(zbuf)
f.close()
но оно не работает (пока), т.к. мало понимаю как работает StringIO вообще и зачем он тут
да и вообще то ли я делаю?

для примера входной файл “78 DA 33 34 32 36 31 35 33 B7 00 00 07 40 01 A5” бинарный конечно
на выходе должна быть строка “12345678”
plusplus
Каким образом ты данные от сервера получаешь?
Isaev
plusplus, я незаморачивался с получением их через python, просто скачал с браузера
Пример файла в аттаче
заголовок посмотрел через HTTPAnalyser (это от файла в из аттача)
Host: www.xxxx.ru
Connection: keep-alive
User-Agent: Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.64 Safari/537.31
Accept: */*
Referer: http://www.xxxx.ru/get/form
Accept-Encoding: gzip,deflate,sdch
Accept-Language: de-DE,de;q=0.8,en-US;q=0.6,en;q=0.4
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3
Cookie: много куков

HTTP/1.1 200 OK
Server: nginx
Date: Sun, 14 Apr 2013 21:08:58 GMT
Content-Type: application/octet-stream
Content-Length: 307
Last-Modified: Thu, 11 Apr 2013 15:22:18 GMT
Connection: keep-alive
Expires: Mon, 14 Apr 2014 21:08:58 GMT
Cache-Control: max-age=31536000
Accept-Ranges: bytes

начало всегда с сигнатуры “78 DA”, данные разные, файлов много, надо способ заглянуть внутрь с целью анализа
JOHN_16
zlib.decompress(s)
на входе бинарная строка, на выходе распакованная. Ничего сложного, в документации это написано.

Isaev
JOHN_16, вот спасибо, действительно все просто
заработало!
JOHN_16
Isaev
ну раз я вам помог то и плюсик в карму поставьте)
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB