Отсутствует первая строка при загрузке файла .rar с помощью urllib2.urlopen () - PullRequest
0 голосов
/ 16 февраля 2009

Окей, это действительно странно. У меня есть этот скрипт, который в основном загружает кучу файлов достижений и извлекает их. Обычно это файлы .zip. Сегодня я сел и решил заставить это работать с файлами rar, и я застрял. Сначала я подумал, что проблема в моем коде unrar, но его там не было. Итак, я сделал:

f = urllib2.urlopen(file_location)
data = StringIO(f.read())
print data.getvalue()

черт, я даже сделал:

f = urllib2.urlopen(file_location)
print f.read()

потому что я просто хотел увидеть первый блок и результат тот же - мне не хватает первой строки файла .rar.

Если я использую веб-браузер для загрузки того же файла, все в порядке, оно не повреждено.

Может кто-нибудь объяснить мне, что, черт возьми, здесь происходит? И какое это имеет отношение к типу файла.

Ответы [ 2 ]

3 голосов
/ 16 февраля 2009

При попытке определить содержимое строки двоичных данных используйте repr() или hex(). Например,

>>> print repr(data)
'\x00\x01\x02\x03\x04\x05\x06\x07\x08\t'
>>> print [hex(ord(c)) for c in data]
['0x0', '0x1', '0x2', '0x3', '0x4', '0x5', '0x6', '0x7', '0x8', '0x9']
>>>
2 голосов
/ 16 февраля 2009

Может ли данные содержать символ возврата каретки ("\ r"), так что первый фрагмент перезаписывается последующими данными, когда вы пытаетесь отобразить его? Это объясняет, почему вы не видите первый блок в своем выводе, но не то, почему вы не можете декодировать его позже.

...