Почему Python в Windows не может прочитать изображение в двоичном режиме? - PullRequest
1 голос
/ 29 января 2010

Я хочу прочитать изображение в двоичном режиме, чтобы я мог сохранить его в своей базе данных, например:

img = open("Last_Dawn.jpg")
t = img.read()
save_to_db(t)

Это работает на Mac. Но в Windows то, что img.read () неверно. Это просто немного из всего набора.

Итак, мой первый вопрос: почему приведенный выше код не работает в Windows?

И второе: есть ли другой способ сделать это?

Большое спасибо!

Ответы [ 4 ]

6 голосов
/ 29 января 2010

Вам нужно открыть в двоичном режиме:

img = open("Last_Dawn.jpg", 'rb')
4 голосов
/ 29 января 2010

Вы должны указать Python открыть файл в двоичном режиме:

img = open('whatever.whatever', 'rb')

См. Документацию по функции открытия здесь: http://docs.python.org/library/functions.html#open

2 голосов
/ 29 января 2010

Не могу сказать точно, но я знаю, что стандарт ISO C не различает двоичный и недвоичный режим при вызове fopen, и все же Windows делает .

Вероятно, код Python просто использует fopen("Last_Dawn.jpg","r") под обложками (поскольку он написан на C), и он открывается в Windows в недвоичном режиме.

Это, скорее всего, преобразует символы конца строки (LF -> CRLF) и, возможно, другие.

Если вы сами задаете режим как 'rb' в своем операторе open, это должно исправить это:

img = open("Last_Dawn.jpg", "rb")
2 голосов
/ 29 января 2010
open(filename, 'rb')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...