Объект File
Модуль django.core.files и его подмодули содержат встроенные классы для базовой работы с файлами в Django.
Класс File
-
class File(file_object, name=None)[исходный код] -
Класс
Fileпредставляет собой тонкую обёртку над файловым объектом Python с некоторыми дополнениями, специфичными для Django. Внутри себя Django использует этот класс, когда требуется представить файл.Объекты
Fileимеют следующие атрибуты и методы:-
name -
Имя файла, включая относительный путь от
MEDIA_ROOT.
-
size[исходный код] -
Размер файла в байтах.
-
file -
Базовый файловый объект, который оборачивает этот класс.
Будьте осторожны с этим атрибутом в подклассах.
Некоторые подклассы
File, включаяContentFileиFieldFile, могут заменять этот атрибут объектом, отличным от файлового объекта Python. В таких случаях этот атрибут сам может быть подклассомFile(и не обязательно тем же самым подклассом). По возможности используйте атрибуты и методы самого подкласса, а не атрибутаfileэтого подкласса.
-
mode -
Режим чтения/записи для файла.
-
open(mode=None, *args, **kwargs)[исходный код] -
Открывает или повторно открывает файл (что также выполняет
File.seek(0)). Аргументmodeпринимает те же значения, что и встроенная функция Pythonopen(). Аргументы*argsи**kwargsпередаются послеmodeво встроенную функцию Pythonopen().При повторном открытии файла аргумент
modeпереопределяет режим, с которым файл был открыт изначально; значениеNoneозначает повторное открытие с исходным режимом.Его можно использовать как контекстный менеджер, например:
with file.open() as f:.
-
__iter__()[исходный код] -
Итерирует по файлу, возвращая по одной строке за раз.
-
chunks(chunk_size=None)[исходный код] -
Итерирует по файлу, возвращая «фрагменты» заданной величины. Значение
chunk_sizeпо умолчанию составляет 64 КБ.Это особенно полезно для очень больших файлов, поскольку позволяет передавать их потоком с диска и избегать сохранения всего файла в памяти.
-
multiple_chunks(chunk_size=None)[исходный код] -
Возвращает
True, если файл достаточно велик и для доступа ко всему его содержимому требуется несколько фрагментов при заданномchunk_size.
-
close()[исходный код] -
Закрывает файл.
В дополнение к перечисленным методам
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)[исходный код] -
Класс
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)[исходный код] -
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/6.0/ref/files/file/