Код:
file('pinax/media/a.jpg', 'wb')
openвместо file, который был устаревшим в Python 2 и удалены в Python 3. См stackoverflow.com/questions/112970/...
Код:
file('pinax/media/a.jpg', 'wb')
openвместо file, который был устаревшим в Python 2 и удалены в Python 3. См stackoverflow.com/questions/112970/...
Ответы:
Файловый режим , запись и двоичный. Поскольку вы пишете файл .jpg, он выглядит нормально.
Но если вы должны прочитать этот файл jpg, вам нужно использовать 'rb'
Больше информации
В Windows добавление «b» к режиму открывает файл в двоичном режиме, поэтому существуют также такие режимы, как «rb», «wb» и «r + b». Python в Windows делает различие между текстовыми и двоичными файлами; символы конца строки в текстовых файлах автоматически слегка изменяются при чтении или записи данных. Эта закулисная модификация файловых данных хороша для текстовых файлов ASCII, но повредит двоичные данные, как в файлах JPEG или EXE.
fd.write("foo\n")фактически записывается на диск foo\r\n(обратите внимание на \r).
Значок 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режим влияет только на Windows. Теперь это было удалено из документации, и двоичный режим «должен использоваться для всех файлов, не содержащих текст».
Это режим, в котором вы открываете файл. «wb» означает, что вы пишете в файл (w), и что вы пишете в двоичном режиме (b).
openвместоfile.fileустарел в Python 2 (не удалось найти версию) и был удален в py3k. (спасибо Скотту) См. этот вопрос для получения дополнительной информации.