Объект Файл¶
Модуль django.core.files и его подмодули содержат встроенные классы для базовой обработки файлов в Django.
Класс Файл¶
- class File(file_object, name=None)¶
Класс
Fileпредставляет собой тонкую оболочку вокруг объекта file Python с некоторыми дополнениями, специфичными для Django. Внутри Django использует этот класс, когда ему необходимо представить файл.Объекты
Fileимеют следующие атрибуты и методы:- name¶
Имя файла, включая относительный путь от
MEDIA_ROOT.
- size¶
Размер файла в байтах.
- file¶
Базовый файловый объект, который обертывает этот класс.
Будьте осторожны с этим атрибутом в подклассах.
Некоторые подклассы
File, включаяContentFileиFieldFile, могут заменить этот атрибут объектом, отличным от file object Python. В этих случаях этот атрибут сам может быть подклассомFile(и не обязательно тем же подклассом). По возможности используйте атрибуты и методы самого подкласса, а не атрибутаfileподкласса.
- mode¶
Режим чтения/записи файла.
- open(mode=None, *args, **kwargs)¶
Откройте или повторно откройте файл (который также выполняет
File.seek(0)). Аргументmodeдопускает те же значения, что и встроенный в Pythonpython:open().*argsи**kwargsпередаются послеmodeво встроенную функцию Pythonpython:open().При повторном открытии файла
режимбудет иметь приоритет над тем режимом, в котором файл был первоначально открыт;Noneозначает повторное открытие в исходном режиме.Его можно использовать в качестве менеджера контекста, например.
с file.open() как 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()будет вызван после удаления файла.