Код:
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).
Ознайомтеся з документацією для отримання додаткової інформації: clickic
open
замістьfile
.file
був застарілий у Python 2 (не вдалося знайти версію) та був видалений у py3k. (дякую Скотту) Дивіться це питання для отримання додаткової інформації.