Почему два файла имеют разные размеры при сохранении и повторной загрузке?
Я использую Pygame в сочетании со StringIO для создания двух файлов из одного источника. Они кажутся разных размеров; Зачем?
import pygame
import StringIO
putimage = pygame.image.load("88keykbd.png")
buff = StringIO.StringIO()
buff.name = '88keykbd.png'
pygame.image.save(putimage, buff)
putimage = buff.getvalue()
print "buff:", type(buff), "myimage:", type(putimage), "getimage:", type(putimage)
print len(putimage) # 110564
with open('myscrambledimage.dat', 'w') as newfile:
newfile.write(putimage)
with open('myscrambledimage.dat', 'r') as newfile:
getimage= newfile.read()
print len(getimage) # 7502
1 ответ
Решение
Вы должны использовать бинарный доступ для ваших файлов:
with open('myscrambledimage.dat', 'wb') as newfile:
newfile.write(putimage)
with open('myscrambledimage.dat', 'rb') as newfile:
getimage= newfile.read()
Когда вы делаете, размеры соответствуют. Помимо окончаний строк, Windows (например) видит символ CTRL+Z как EOF.