Spec-Zone.ru › Django 5.2

Объект файла

Модуль 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 допускает те же значения, что и встроенная функция Python open(). *args и **kwargs передаются после mode в встроенную функцию Python open().

При повторном открытии файла 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/

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API