код:
file('pinax/media/a.jpg', 'wb')
код:
file('pinax/media/a.jpg', 'wb')
Режим файла, запись и двоичный файл. Поскольку вы пишете файл .jpg, он выглядит хорошо.
Но если вы должны прочитать этот файл jpg, вам нужно использовать 'rb'
Дополнительная информация
В Windows, 'b' добавлен в режим открывает файл в двоичном режиме, поэтому существуют также такие режимы, как "rb", "wb", и 'r + b'. Python на Windows делает различие между текстом и двоичным файлы; символы конца строки в текстовые файлы автоматически изменяются когда данные считываются или записываются. Эта за кадром модификация данные файла отлично подходят для текста ASCII файлы, но itll поврежденные двоичные данные как в файлах JPEG или EXE.
wb
указывает, что файл открыт для записи в двоичном режиме.
При записи в двоичном режиме Python не вносит изменений в данные, поскольку они записываются в файл. Однако в текстовом режиме (когда b
исключен, например, просто w
или когда вы задаете текстовый режим с помощью wt
), Python будет кодировать текст на основе кодировки текста по умолчанию. Кроме того, Python преобразует окончания строк (\n
) в любое окончание, зависящее от платформы, что приведет к повреждению двоичного файла, такого как файл exe
или png
.
Поэтому текстовый режим следует использовать при записи текстовых файлов (будь то простой текст или текстовый формат, такой как CSV), тогда как двоичный режим должен использоваться при написании нетекстовых файлов, таких как изображения.
Рекомендации:
https://docs.python.org/3/tutorial/inputoutput.html#reading-and-writing-files https://docs.python.org/3/library/functions.html#open
Это режим, с которым вы открываете файл. "wb" означает, что вы пишете в файл (w), и что вы пишете в двоичном режиме (b).
Ознакомьтесь с документацией для получения дополнительной информации: clicky
Также следует использовать open
вместо file
. file
был устаревшим в Python 2 (не смог найти какую версию) и был удален в py3k. (спасибо Скотту)
Подробнее см. этот вопрос.