Missing primera línea al descargar el archivo .rar usando urllib2.urlopen ()

StackOverflow https://stackoverflow.com/questions/552328

  •  23-08-2019
  •  | 
  •  

Pregunta

Okey esto es realmente extraño. Tengo este script que básicamente descarga montón de archivos de lograr y los extrae. Por lo general, estos archivos son archivos .zip. Hoy me senté y decidí hacer que funcione con archivos RAR y me quedé atrapado. Al principio pensé que el problema está en mi código de descomprimir, pero no estaba allí. Así que lo hice:

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

diablos incluso hizo:

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

porque yo sólo quería ver el primer trozo y el resultado es el mismo -. Me falta la primera línea del archivo .rar

Si utilizo el navegador web para descargar el mismo archivo que todo está bien, no es corrupto.

Puede alguien por favor me explique qué demonios está pasando aquí? Y lo que tiene que ver con el tipo de archivo.

¿Fue útil?

Solución

¿Los datos tal vez contienen un carácter "retorno de carro" ( "\ r"), de modo que el primer fragmento se sobrescribe con datos posteriores al intentar mostrarlo? Esto explicaría por qué no se ve el primer trozo en su salida, pero no por qué no son capaces de decodificar más adelante.

Otros consejos

Cuando se trata de determinar el contenido de la cadena de datos binarios, usar repr() o hex() . Por ejemplo,

>>> 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']
>>>
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top