Cuando llame al file.read()
, leerá todo el archivo en la memoria. Luego, si llama nuevamente al file.read()
en el mismo objeto de archivo, ya habrá llegado al final del archivo, por lo que solo devolverá una cadena vacía.
En su lugar, intente, por ejemplo, reabrir el archivo:
from StringIO import *
file = open('1.bmp', 'r')
print file.read(), '\n'
file.close()
file2 = open('1.bmp', 'r')
print StringIO(file2.read()).getvalue()
file2.close()
También puede utilizar la instrucción with
para hacer que un código más limpio:
from StringIO import *
with open('1.bmp', 'r') as file:
print file.read(), '\n'
with open('1.bmp', 'r') as file2:
print StringIO(file2.read()).getvalue()
Como acotación al margen, yo recomendaría abrir archivos binarios en modo binario: open('1.bmp', 'rb')
con ese código, el segundo file.read() no obtendría nada. Debería usar seek (0) antes de volver a leer el archivo. –