Код:
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. (спасибо Скотту) См. этот вопрос для получения дополнительной информации.