Я загружаю изображение из групп новостей с модулем nntplib в python. Затем я хочу сохранить данные в файл. Я использую:
news.group('alt.binaries.misc')
data=''.join(news.body('<DhTgplpHcRsZMBTTw3i35@spot.net>')[-1])
f=open('image.png','wb')
f.write(data)
f.close()
Однако сохраненный файл не является правильным файлом изображения.
data
это строка вида:
'\x89PNG=B=C\x1a=C=A=A=A=BIHDR=A=A\x02X=A=A\x01Q\x08\x06=A=A=A\xa8\x81\xd3\x89=A=A=A\tpHYs=A=A\x0b\x13=A=A\x0b\x13\x01=A\x9a\x9c\x18=A=A etc... '
, с длиной 309530.
По первым байтам я могу сказать, что этот файл должен быть в формате png, а его размер мне тоже подходит, поэтому я предполагаю, что данные верны.
Кто-нибудь знает, что я делаю не так?
UPDATE:
Я заглянул в заголовок статьи и там написано: Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 8bit
Не думаю, что это очень полезно при расшифровке текста, но кто знает ..
Я также сравнил свою строку с обычными заголовками файлов png. Это \x89PNG\r\n\x1a\n
или \x89PNG\x0d\x0a\x1a\x0a
. (как сказала и Алексис)
Я пришел к выводу, что = B означает \ x0d, = C для \ x0a и = A для \ x00. Я предполагаю, что другие \ x .. не закодированы, но я не уверен (я не очень разбираюсь в кодировках) update3 показывает, что они различаются.
Что такое кодировка, которая кодирует этот путь?
UPDATE2:
данные: - см. ниже - (repr(data)
)
Update3:
Я смог сохранить изображение с другой программой, а затем открыть его в Python. Это то, что данные должны быть. - см. Ниже - .
Начало выглядит примерно одинаково, но после этого есть большая разница. Какого черта эта кодировка? это действительно расстраивает меня. (Кстати, спасибо за всю большую помощь до сих пор)
Все файлы: http://dl.dropbox.com/u/1499291/python-encoding-question/index.html