Объект файла
Модуль django.core.files и его подмодули содержат встроенные классы для базовой работы с файлами в Django.
Класс File
-
class File(file_object, name=None)[source] -
Класс
File— это тонкий обёртку вокруг объекта файла Python объект файла с некоторыми дополнениями, специфичными для Django. Внутренне Django использует этот класс для представления файла.Объекты
Fileимеют следующие атрибуты и методы:-
name -
Имя файла, включающее относительный путь от
MEDIA_ROOT.
-
size[source] -
Размер файла в байтах.
-
file -
Основной объект файла, который оборачивается этим классом.
Будьте внимательны с этим атрибутом в подклассах.
Некоторые подклассы
File, включаяContentFileиFieldFile, могут заменить этот атрибут другим объектом, отличным от объекта файла Python объект файла. В этих случаях этот атрибут может сам быть подклассомFile(и не обязательно того же подкласса). По возможности используйте атрибуты и методы самого подкласса, а не атрибутfileподкласса.
-
mode -
Режим чтения/записи файла.
-
open(mode=None, *args, **kwargs)[source] -
Открыть или повторно открыть файл (что также выполняет
File.seek(0)). Аргументmodeдопускает те же значения, что и встроенная функция Pythonopen().*argsи**kwargsпередаются послеmodeв встроенную функцию Pythonopen().При повторном открытии файла
modeпереопределит любой режим, в котором файл был первоначально открыт;Noneозначает повторное открытие в исходном режиме.Он может использоваться как менеджер контекста, например,
with file.open() as f:.
-
__iter__()[source] -
Итерирование по файлу, выводя по одной строке за раз.
-
chunks(chunk_size=None)[source] -
Итерирование по файлу, выводя «куски» заданного размера.
chunk_sizeпо умолчанию равен 64 КБ.Это особенно полезно с очень большими файлами, так как позволяет их потоковой передаче с диска и избегает сохранения всего файла в памяти.
-
multiple_chunks(chunk_size=None)[source] -
Возвращает
True, если файл достаточно большой, чтобы потребовалось несколько кусков для доступа ко всему его содержимому, учитывая некоторыеchunk_size.
-
close()[source] -
Закрыть файл.
В дополнение к перечисленным методам,
Fileэкспонирует следующие атрибуты и методы своегоfileобъекта:encoding,fileno,flush,isatty,newlines,read,readinto,readline,readlines,seek,tell,truncate,write,writelines,readable(),writable()иseekable(). -
Класс ContentFile
-
class ContentFile(content, name=None)[source] -
Класс
ContentFileнаследуется отFile, но в отличие отFileон работает со строковым содержимым (также поддерживаются байты), а не с фактическим файлом. Например:from django.core.files.base import ContentFile f1 = ContentFile("esta frase está en español") f2 = ContentFile(b"these are bytes")
Класс ImageFile
-
class ImageFile(file_object, name=None)[source] -
Django предоставляет встроенный класс специально для изображений.
django.core.files.images.ImageFileнаследует все атрибуты и методы отFileи дополнительно предоставляет следующие:-
width[source] -
Ширина изображения в пикселях.
-
height[source] -
Высота изображения в пикселях.
-
Дополнительные методы для файлов, прикреплённых к объектам
Любой файл 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/5.2/ref/files/file/