Класс File

Класс File является базовым классом для работы с файлами в Django. Он предоставляет унифицированный интерфейс для доступа к содержимому файла, его атрибутам и выполнения операций чтения и записи. Класс используется как основа для других файловых классов, таких как ContentFile, UploadedFile и других. Основные параметры конструктора включают путь к файлу или файловый объект, а также режим открытия.

Синтаксис

pythonfrom django.core.files import File

file = File(file_object, name=None)

Пример

Базовое использование класса File для открытия и чтения файла:

pythonfrom django.core.files import File

with open('example.txt', 'rb') as f:
  file = File(f, name='example.txt')
  content = file.read()
  print(content)

Результат выполнения кода:

python"b'This is the content of the file.'"

Пример

Использование класса File с моделью Django для сохранения загруженного файла:

pythonfrom 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()

Результат выполнения кода:

python"File saved successfully to documents/example.pdf"

Пример

Чтение файла по частям с помощью метода chunks:

pythonfrom 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)}")

Результат выполнения кода:

python"Chunk size: 1024"
"Chunk size: 512"
"Chunk size: 1024"

Пример

Получение информации о файле с использованием атрибутов name и size:

pythonfrom 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")

Результат выполнения кода:

python"File name: document.pdf"
"File size: 2048576 bytes"

Смотрите также

  • класс ContentFile,
    который работает с файлами из строковых данных
  • класс UploadedFile,
    который предоставляет интерфейс для загруженных файлов
  • атрибут name,
    который возвращает имя файла
  • атрибут size,
    который возвращает размер файла в байтах