Почему два файла имеют разные размеры при сохранении и повторной загрузке?

Я использую 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.

Другие вопросы по тегам