Quando si chiama file.read()
, leggerà l'intero file in memoria. Quindi, se chiami di nuovo file.read()
sullo stesso oggetto file, avrà già raggiunto la fine del file, quindi restituirà solo una stringa vuota.
Invece, prova ad es. riaprire il file:
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()
È inoltre possibile utilizzare l'istruzione with
per far sì che più pulito il codice:
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()
Per inciso, mi sento di raccomandare l'apertura dei file binari in modo binario: open('1.bmp', 'rb')
fonte
2011-09-26 16:36:00
con quel codice, il secondo file.read() non otterrebbe nulla. Dovresti usare seek (0) prima di leggere di nuovo il file. –