Po wywołaniu file.read()
, odczyta cały plik do pamięci. Następnie, jeśli ponownie wywołasz file.read()
na tym samym obiekcie pliku, osiągnie on już koniec pliku, więc zwróci tylko pusty ciąg.
Zamiast tego spróbuj np. ponownym otwarciu pliku:
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()
Można również użyć instrukcji with
aby to czystsze kodu:
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()
Tak na marginesie, polecam otwierania plików binarnych w trybie binarnym: open('1.bmp', 'rb')
z tym kodem, drugi plik.read() nie dostanie nic. Powinieneś użyć funkcji wyszukiwania (0) przed ponownym odczytaniem pliku. –