Метод size
Метод size применяется к объекту хранилища и возвращает
размер указанного файла в байтах. Метод принимает имя файла
в качестве аргумента и возвращает целое число. Если файл
не существует, метод выбрасывает исключение FileNotFoundError.
Этот метод полезен для проверки размера файлов перед их
обработкой или отображения информации о файле пользователю.
Синтаксис
storage.size(name)
Параметры
Метод size принимает следующие параметры:
name - имя файла в системе хранения. Это обязательный
строковый параметр, который указывает путь к файлу
относительно корня хранилища.
Пример . С использованием default_storage
Получим размер файла с именем "documents/report.pdf" с использованием стандартного хранилища:
from django.core.files.storage import default_storage
file_name = "documents/report.pdf"
file_size = default_storage.size(file_name)
print(f"Размер файла: {file_size} байт")
Результат выполнения кода:
"Размер файла: 1024 байт"
Пример . С использованием FileSystemStorage
Создадим экземпляр файловой системы хранения и получим размер файла "images/photo.jpg":
from django.core.files.storage import FileSystemStorage
fs = FileSystemStorage(location="/media")
file_name = "images/photo.jpg"
file_size = fs.size(file_name)
print(file_size)
Результат выполнения кода:
2048
Пример . Обработка исключения
Попробуем получить размер несуществующего файла с обработкой ошибки:
from django.core.files.storage import default_storage
file_name = "missing/document.txt"
try:
file_size = default_storage.size(file_name)
print(file_size)
except FileNotFoundError as e:
print(f"Файл не найден: {e}")
Результат выполнения кода:
"Файл не найден: [Errno 2] No such file or directory: 'missing/document.txt'"
Пример . Проверка размера перед загрузкой
Проверим размер файла перед его обработкой и выведем информацию в удобочитаемом формате:
from django.core.files.storage import default_storage
file_name = "uploads/video.mp4"
max_size = 100 * 1024 * 1024 # 100 MB
try:
file_size = default_storage.size(file_name)
if file_size > max_size:
print("Файл слишком большой")
else:
print(f"Размер файла: {file_size / 1024 / 1024:.2f} MB")
except FileNotFoundError:
print("Файл не найден")
Результат выполнения кода:
"Размер файла: 45.67 MB"