Объект файла
Модуль django.core.files и его подмодули содержат встроенные классы для базовой работы с файлами в Django.
Класс File
-
class File(file_object)[source] -
Класс
File— это тонкий обертка вокруг объекта файла Python объекта файла с некоторыми дополнениями, специфичными для Django. Внутренне Django использует этот класс для представления файла.Объекты
Fileимеют следующие атрибуты и методы:-
name -
Имя файла, включая относительный путь от
MEDIA_ROOT.
-
size -
Размер файла в байтах.
-
file -
Внутренний объект файла объекта файла, который обертывает этот класс.
Будьте осторожны с этим атрибутом в подклассах.
Некоторые подклассы
File, включаяContentFileиFieldFile, могут заменить этот атрибут на другой объект, отличный от объекта файла Python объекта файла. В этих случаях этот атрибут может сам по себе являться подклассомFile(и необязательно таким же подклассом). Всякий раз, когда это возможно, используйте атрибуты и методы самого подкласса, а не атрибуты подклассаfile.
-
mode -
Режим чтения/записи для файла.
-
open(mode=None)[source] -
Открыть или переоткрывать файл (что также делает
File.seek(0)). Аргументmodeпозволяет использовать те же значения, что и встроенная функция Pythonopen().При повторном открытии файла
modeпереопределит режим, с которым файл был первоначально открыт;Noneозначает переоткрытие с исходным режимом.
-
read(num_bytes=None) -
Прочитать содержимое файла. Необязательный аргумент
size— количество байтов для чтения; если он не указан, файл будет прочитан до конца.
-
__iter__()[source] -
Итерироваться по файлу, возвращая по одной строке за раз.
Fileтеперь использует универсальные новые строки. Следующие значения распознаются как конец строки: конвенция Unix'\n', конвенция Windows'\r\n', и старая конвенция Macintosh'\r'.
-
chunks(chunk_size=None)[source] -
Итерироваться по файлу, возвращая «куски» заданного размера.
chunk_sizeпо умолчанию равен 64 КБ.Это особенно полезно с очень большими файлами, поскольку позволяет их потоковой передаче с диска и избегает хранения всего файла в памяти.
-
multiple_chunks(chunk_size=None)[source] -
Возвращает
Trueесли файл достаточно велик, чтобы требовалось несколько кусков для доступа ко всему его содержимому, с учетомchunk_size.
-
write(content) -
Записывает указанную строку содержимого в файл. В зависимости от системы хранения, которая находится за кулисами, это содержимое может не быть полностью записано до вызова
close()для файла.
-
close()[source] -
Закрыть файл.
В дополнение к перечисленным методам,
Fileпредоставляет следующие атрибуты и методы своего объектаfile:encoding,fileno,flush,isatty,newlines,read,readinto,readlines,seek,softspace,tell,truncate,writelines,xreadlines. Если вы используете Python 3, методseekableтакже доступен.Метод
seekableбыл добавлен. -
Класс ContentFile
-
class ContentFile(File)[source] -
Класс
ContentFileнаследуется отFile, но в отличие отFileон работает с текстовым содержимым (также поддерживаются байты), а не с фактическим файлом. Например:from __future__ import unicode_literals from django.core.files.base import ContentFile f1 = ContentFile("esta sentencia está en español") f2 = ContentFile(b"these are bytes")
Класс ImageFile
-
class ImageFile(file_object)[source] -
Django предоставляет встроенный класс специально для изображений.
django.core.files.images.ImageFileнаследует все атрибуты и методы отFile, и дополнительно предоставляет следующие:-
width -
Ширина изображения в пикселях.
-
height -
Высота изображения в пикселях.
-
Дополнительные методы для файлов, прикрепленных к объектам
Любой объект File, связанный с объектом (как в Car.photo, ниже), также будет иметь несколько дополнительных методов:
-
File.save(name, content, save=True) -
Сохраняет новый файл с указанным именем файла и содержимым. Это не заменит существующий файл, а создаст новый файл и обновит объект, чтобы он указывал на него. Если
saveравенTrue, методsave()модели будет вызван после сохранения файла. То есть эти две строки:>>> car.photo.save('myphoto.jpg', content, save=False) >>> car.save()эквивалентны:
>>> car.photo.save('myphoto.jpg', content, save=True)Обратите внимание, что аргумент
contentдолжен быть экземпляромFileили подклассаFile, например,ContentFile.
-
File.delete(save=True) -
Удаляет файл из экземпляра модели и удаляет исходный файл. Если
saveравенTrue, методsave()модели будет вызван после удаления файла.
© Django Software Foundation and individual contributors
Licensed under the BSD License.
https://docs.djangoproject.com/en/1.9/ref/files/file/