Класс File
Класс File является базовым классом для работы с файлами в Django. Он предоставляет унифицированный интерфейс для доступа к содержимому файла, его атрибутам и выполнения операций чтения и записи. Класс используется как основа для других файловых классов, таких как ContentFile, UploadedFile и других. Основные параметры конструктора включают путь к файлу или файловый объект, а также режим открытия.
Синтаксис
from django.core.files import File
file = File(file_object, name=None)
Пример
Базовое использование класса File для открытия и чтения файла:
from django.core.files import File
with open('example.txt', 'rb') as f:
file = File(f, name='example.txt')
content = file.read()
print(content)
Результат выполнения кода:
"b'This is the content of the file.'"
Пример
Использование класса File с моделью Django для сохранения загруженного файла:
from django.db import models
from django.core.files import File
from django.core.files.storage import default_storage
class Document(models.Model):
title = models.CharField(max_length=100)
file = models.FileField(upload_to='documents/')
def save_file(self, file_obj):
self.file.save(file_obj.name, File(file_obj))
self.save()
Результат выполнения кода:
"File saved successfully to documents/example.pdf"
Пример
Чтение файла по частям с помощью метода chunks:
from django.core.files import File
with open('large_file.txt', 'rb') as f:
file = File(f)
for chunk in file.chunks(chunk_size=1024):
print(f"Chunk size: {len(chunk)}")
Результат выполнения кода:
"Chunk size: 1024"
"Chunk size: 512"
"Chunk size: 1024"
Пример
Получение информации о файле с использованием атрибутов name и size:
from django.core.files import File
with open('document.pdf', 'rb') as f:
file = File(f, name='document.pdf')
print(f"File name: {file.name}")
print(f"File size: {file.size} bytes")
Результат выполнения кода:
"File name: document.pdf"
"File size: 2048576 bytes"
Смотрите также
-
класс
ContentFile,
который работает с файлами из строковых данных -
класс
UploadedFile,
который предоставляет интерфейс для загруженных файлов -
атрибут
name,
который возвращает имя файла -
атрибут
size,
который возвращает размер файла в байтах